java流(IO流)的分类,文件续写、读入

xiaoxiao2021-03-01  104

流(IO流)的分类,写出流FileWriter

package com.qianfeng.test; import java.io.FileWriter; import java.io.IOException; /* * 流(IO流):input-output-stream。作用:实现两个设备之间的通信。 * 设备:内存,硬盘(磁盘 ),控制台,键盘,文件,网络。 * 网络:在网络上,你的主机之外的环境。 * * 流的分类: * 根据流的操作的方式分类:输入流和输出流 * 根据数据的类型分类:字节流和字符流 * * 字节流:传输的是字节,可以传输任意类型的数据。----视频,音频,文件,图片等。 * 字符流:传输的也是字节,不同点在于传输过程中加入了编码的操作,让我们在传输字符的时候更加便捷。----文件。 * * 以内存为参考 * 字节流:--对应的父类 * 字节输入流:InputStream * 字节输出流:OutputStream * * 字符流:--对应的父类 * 字符读入流(将数据输入内存):Reader * 字符写出流(将数据从内存取出):Writer * * 先处理字符流: * 实例:以磁盘的存储为例,将内容写入文件 * 分析: * 因为传输的是字符----字符流 * 因为是从内存传出----写出流--FileWriter * */ public class Demo2 { public static void main(String[] args) throws IOException { //创建写出流对象 /* * 注意点一:关联文件的特点:如果之前不存在,程序会自动创建一个,如果已经存在,直接使用,但是会将原文件的内容覆盖。 * 注意点二:如果只写名字,不写具体的路径,默认的路径是当前的工程。 * 注意点三:我们可以指定自己的路径,但是一定要保证路径存在,否则报异常FileNotFoundException */ FileWriter fileWriter = new FileWriter("temp1.txt"); //调用写出方法 /* * 注意点四:在执行write方法时,数据被临时写入了流对象的内部数组中,这是一个字节数组,会默认去查编码表。 */ fileWriter.write("bingbingAndChenchen"); //调用刷新方法--会将内容真正的写入文件。 //fileWriter.flush(); //关闭流--a:将流关闭 b:刷新 //注意点五:流使用完后必须关闭。 fileWriter.close(); //注意点六:当流对象关闭,不能再进行任何操作,否则报异常java.io.IOException: Stream closed //fileWriter.write("张三"); } }

文件的续写:FileWriter(String file,boolean value)

package com.qianfeng.test; import java.io.FileWriter; import java.io.IOException; /* * 文件的续写:FileWriter(String file,boolean value) * 当value为true的时候,不会将原来的内容删除。 * * \:是转义字符 \t:制表符 \\:普通的斜杠 * 实现换行:\r\n----window下的换行。 linux:\n * */ public class Demo3 { public static void main(String[] args) { FileWriter fileWriter = null; // 创建对象并关联文件 try { fileWriter = new FileWriter("temp2.txt", true); // 写 fileWriter.write("bingbing"); fileWriter.write("\r\n"); fileWriter.write("zhangsan"); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭 if (fileWriter != null) { try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

文件读入,read()一个字符一个字符的读

package com.qianfeng.test; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /* * 实例:将数据从文件中取出--文件读入流(FileReader) */ public class Demo4 { public static void main(String[] args) throws IOException { //创建对象并关联文件。关联的文件必须存在。 FileReader fileReader = new FileReader("temp2.txt"); //读 /* * 两种方式: * 第一种:read()----一个字符一个字符的读 * 第二种:read(字符数组)--一次可以读取多个字符,将读到的字符临时存储到了这个数组中 */ //第一种:read()----一个字符一个字符的读 //a:会将当前的字符读出 b:将当前的指针后移一个字符 int data; // data = fileReader.read();//这里得到的ASCII值 // System.out.println((char)data); // data = fileReader.read(); // System.out.println((char)data); // data = fileReader.read(); // System.out.println((char)data); // data = fileReader.read(); // System.out.println((char)data); // data = fileReader.read(); // System.out.println((char)data); // data = fileReader.read(); // System.out.println(data);//这里返回的是-1,代表读完了。 while((data = fileReader.read()) != -1){ System.out.println((char)data); } //关闭流 fileReader.close(); } }

文件读入,read(字符数组)一次可以读取多个字符

package com.qianfeng.test; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Demo5 { public static void main(String[] args) throws IOException { //创建对象并关联文件。关联的文件必须存在。 FileReader fileReader = new FileReader("temp2.txt"); //第二种:read(字符数组)--一次可以读取多个字符,将读到的字符临时存储到了这个数组中. /* * 数组是临时存放数据的地方,我们会将读到的字符放到数组中,数组的大小决定了我们一次可以读到的字符个数。 * 但是从内存的角度考虑,临时数组并不是越大越好,一般数组的大小在1kb左右。 * * 返回值:代表的是本次读到的真实字符个数,如果返回值是-1代表读完了。 */ char[] arr = new char[2]; int num; // num = fileReader.read(arr); // System.out.println(new String(arr,0,num)+" "+num); // num = fileReader.read(arr); // System.out.println(new String(arr,0,num)+" "+num); // num = fileReader.read(arr); // System.out.println(new String(arr,0,num)+" "+num);//代表将字符数组从下标0开始的num个字符转成字符串。 // num = fileReader.read(arr); // System.out.println(new String(arr)+" "+num);//-1,说明读完了 while((num=fileReader.read(arr))!=-1){ System.out.println(new String(arr,0,num)+" "+num); } //关闭流 fileReader.close(); } }

相对路径和绝对路径,内容拷贝

package com.qianfeng.test; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * 路径的讲解: * 相对路径和绝对路径 * 实例:D:\\workspace\\32\\BigData1715N19\\src\\com\\qianfeng\\test\\Demo1.java 绝对路径 * com\\qianfeng\\test\\Demo1.java 相对路径 * 相对路径:从路径中间的某个部位开始一直到当前的文件名字。 * 绝对路径:一个文件的完整路径,即从根目录开始的路径。 * * 路径中的/ \是转义字符 \\==/ * */ public class Demo6 { public static void main(String[] args) throws IOException, InterruptedException { //实例:实现文件的赋值 //要求:将Demo1的内容拷贝到temp3.txt //1.创建读入流和写出流并关联对应的文件。 FileReader fileReader = new FileReader("src\\com\\qianfeng\\test\\Demo2.java"); FileWriter fileWriter = new FileWriter("temp3.txt"); //2.读写 //一次读多个字符 // char[] arr = new char[10]; // int num; // while((num=fileReader.read(arr))!=-1){ // //将字符数组的部分内容写入文件 // fileWriter.write(arr,0,num); // } //一次读一个字符 int num; while((num=fileReader.read())!=-1){ fileWriter.write(num);//write()自带了编码 } //3.关闭资源 fileReader.close(); fileWriter.close(); } }
转载请注明原文地址: https://www.6miu.com/read-4150003.html

最新回复(0)