java.io中流的操作:字节流、字符流
(1)使用File类打开一个文件
(2)通过字节流或字符流的子类指定输出的位置
(3)进行读/写操作
(4)关闭输入/输出
1、字节流:主要是byte类型数据,以byte数组为准
输出数据:OutputStream类:字节输出流最大父类
输入数据:InputStream类
(1)
//第一步:使用File类打开电脑中的一个文档,文件不存在会自动创建 File f = new File("文件路径"); //第二步:通过字节流或字符流的子类指定输出的位置 OutputStream out = null; out= new FileOutputStream(f); //要输出的对象 String str = "Hello World"; //只能输出byte数组,所以需要将字符串变为byte数组 byte b[] =str.getBytes(); //将内容输出 out.write(b); //关闭输出流 out.close();
(2)
//第一步:使用File类打开电脑中的一个文档 File f = new File("文件路径"); //第二步:通过字节流或字符流的子类指定读取的位置 InputStream input = null; input= new FileInputStream(f); //进行读操作,读到byte数组中,开辟大小为1024内存用来放数据 byte b[] = new byte[1024]; input.read(b); //关闭输入流 input.close(); //把byte数组变为字符串输出 System.out.println("内容为:"+new String(b));
2、字符流
输出数据:Writer类
输入数据:Reader类
(1)
File f = new File("文件路径"); Writer out = null; out= new FileWriter(f); String str = "Hello World"; out.write(str); out.close();
不需要将字符串变为byte数组之后再输出
(2)
//第一步:使用File类打开电脑中的一个文档 File f = new File("文件路径"); //第二步:通过字节流或字符流的子类指定读取的位置 Reader reader = null; reader= new FileReader(f); //进行读操作,读到byte数组中,开辟大小为1024内存用来放数据 char c[] = new char[1024]; reader.read(c); //关闭输入流 reader.close(); //把byte数组变为字符串输出 System.out.println("内容为:"+new String(c));
区别:字符流操作时使用了缓冲区
缓冲区:关闭字符流时会强制性地将缓冲区中的内容进行输出,没有close(),缓冲区的内容是无法输出的,flush()方法会强制性清空缓冲区内容,然后输出数据
3、转换流——字符流<——>字节流
OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流(存储在文件中的只能是字节形式的数据)
InputStreamReader:是Reader的子类,将输入的字节流变为字符流(比如:BufferReader操作的只能是字符流)