IO流-小结和案例

IO流-小结

/*
需求:
把 X:\\XXX\\XXX.mp4 复制到模块目录下的 XXX.mp4
思路:
1:根据数据源创建字节输入流对象
2:根据目的地创建字节输出流对象
3:读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)
4:释放资源
*/
//第4种方式:字节缓冲流一次读写一个字节数组  (效率最高的方法)
    public static void main(String[] args) throws IOException{
        //根据数据源创建字节缓冲输入流对象
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("x:\\xxx.mp4"));
        //根据目的地创建字节缓冲输出流对象
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xxx.mp4"));
        //读写数据, 复制文件
        byte [] bys = new byte[1024];
        int len;
        while((len=bis.read(bys))!=-1){
            bos.write(bys,0,len);
        }
        //释放资源
        bis.close();
        bos.close();
    }
//其他方法参考"字节流2中复制视频(大文件)"

//复制字符文件最常用的方法----字符缓冲流的特有方法--标准格式
 public static void main(String[] args) throws IOException {
        //根据数据源创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader("x:\\x\\xxx.txt"));
        //根据目的地创建字符缓冲输出流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("xxx.txt"));
        //读写数据, 复制文件, 用字符缓冲流特有功能实现
        String line;
        while ((line=br.readLine())!=null){
            bw.write(line);
            bw.newLine();
            bw.flush();
        }
        //释放资源
        br.close();
        bw.close();
    }

案例

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
/*
案例:集合到文件
需求:把ArrayList集合中的字符串数据写入到文本文件。要求:每一个字符串元素作为文件中的一行数据
思路:
1. 创建ArrayList集合
2. 往集合中存储字符串元素
3. 创建字符缓冲输出流对象
4. 遍历集合,得到每一个字符串数据
5. 调用字符缓冲输出流对象的方法写数据
6. 释放资源
 */
public class List_To_File {
    public static void main(String[] args) throws IOException {
        //1. 创建ArrayList集合
        ArrayList<String> arr = new ArrayList<>();
        //2. 往集合中存储字符串元素
        arr.add("hello,");
        arr.add("world,");
        arr.add("java,");
        arr.add("example.");
        //3. 创建字符缓冲输出流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("Arr.txt"));
        //4. 遍历集合,得到每一个字符串数据
        for (String string:arr){
            //5. 调用字符缓冲输出流对象的方法写数据
            bw.write(string);
            bw.newLine();
            bw.flush();
        }
        //6. 释放资源
        bw.close();
    }
}

package IO.Example;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

/*
案例:文件到集合
需求:把文本文件中的数据读取到集合中,并遍历集合。
要求:文件中每一行数据是一个集合元素
思路:
① 创建字符缓冲输入流对象
② 创建ArrayList集合对象
③ 调用字符缓冲输入流对象的方法读数据
④ 把读取到的字符串数据存储到集合中
⑤释放资源
6.遍历集合
 */
public class File_to_List {
    public static void main(String[] args) throws IOException {
        //① 创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader("Arr.txt"));
        //② 创建ArrayList集合对象
        ArrayList<String> arr =new ArrayList<>();
        //③ 调用字符缓冲输入流对象的方法读数据
        String line;
        while ((line=br.readLine())!=null){
            //④ 把读取到的字符串数据存储到集合中
            arr.add(line);
        }
        //⑤释放资源
        br.close();
        //6.遍历集合
        for (String s:arr){
            System.out.println(s+",");
        }
    }
}


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

/*
案例:点名器
需求:我有一个文件里面存储了班级同学的姓名,每一个姓名占一行,要求通过程序实现随机点名器
思路:
1. 创建字符缓冲输入流对象
2. 创建ArrayList集合对象
3. 调用字符缓冲输入流对象的方法读数据
4. 把读取到的字符串数据存储到集合中
5. 释放资源
6. 使用Random产生一个随机数,随机数的范围在:[0,集合的长度)
7. 把第6步产生的随机数作为索引到ArrayList集合中获取值
8. 把第7步得到的数据输出在控制台
 */
public class Call_name {
    public static void main(String[] args) throws IOException {
        //1. 创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader("Arr.txt"));
        //2. 创建ArrayList集合对象
        ArrayList<String> arrayList = new ArrayList<>();
        //3. 调用字符缓冲输入流对象的方法读数据
        String line;
        while ((line=br.readLine())!=null){
            //4. 把读取到的字符串数据存储到集合中
            arrayList.add(line);
        }
        //5. 释放资源
        br.close();
        //6. 使用Random产生一个随机数,随机数的范围在:[0,集合的长度)
        Random r = new Random();
        int index = r.nextInt(arrayList.size());
        //7. 把第6步产生的随机数作为索引到ArrayList集合中获取值
        String name = arrayList.get(index);
        //8. 把第7步得到的数据输出在控制台
        System.out.println("幸运者是: "+name);
    }
}

posted @ 2023-03-17 10:23  大宝贝94106  阅读(27)  评论(0)    收藏  举报