功能分解1:文件---》FileReader
一个字符一个字符将文件中的内容读取到程序中了
package com.msb.io01; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /** * @author : liu * 日期:16:11:47 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test01 { //这是一个main方法:是程序的入口 public static void main(String[] args) throws IOException { //文件--》程序 //1.有一个具体的文件:--->创建一个File对象 File f=new File("d:\\test.txt"); //2.利用FileReader这个流,这个管怼到源文件上去---》创建一个FileReader的流的对象 FileReader fr=new FileReader(f); //3.进行操作“吸”的动作--》读取动作 //下面的代码我们验证了:如果到了文件的结尾处,那么读取的内容为-1 /*int n1 = fr.read(); int n2 = fr.read(); int n3 = fr.read(); int n4 = fr.read(); int n5 = fr.read(); int n6 = fr.read(); System.out.println(n1); System.out.println(n2); System.out.println(n3); System.out.println(n4); System.out.println(n5); System.out.println(n6);*/ //方式1: /*int n = fr.read(); while (n!=-1){ System.out.println(n); n=fr.read(); }*/ //方式2: int l; while((l=fr.read())!=-1){ System.out.println((char) l); } //4.“管”不用了,就要关闭---》关闭流 //流,数据库,网络资源靠jvm本身没法帮我们关闭,此时必须程序员手动关闭: fr.close(); } }
想一次性读取5个字符,不够的话下次在读五个字符:
package com.msb.io01; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /** * @author : liu * 日期:16:43:47 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test02 { //这是一个main方法:是程序的入口 public static void main(String[] args) throws IOException { //文件--》程序 //1.创建一个File对象 File f=new File("d:\\test.txt"); //2.创建一个FileReader的流的对象 FileReader fr = new FileReader(f); //3.读取动作 //引入一个“快递员的小车”,这个“小车”一次拉5个快递 char[] ch=new char[5];//缓冲数组 int len = fr.read(ch);//一次读取五个:返回值是这个数组中有效的长度 while (len!=-1){ //错误方式 /*for (int i = 0; i < ch.length; i++) { System.out.println(ch[i]); }*/ //正确方式 /*for (int i = 0; i < len; i++) { System.out.println(ch[i]); }*/ //正确方式将数组专为String类型 String s=new String(ch,0,len); System.out.print(s); len= fr.read(ch); } //4.关闭流 fr.close(); } }
功能分解2:程序---》文件:feilwriter
一个字符一个字符的向外输出:
public class Test03 { //这是一个main方法:是程序的入口 public static void main(String[] args) throws IOException { //1.有一个目标文件 File f=new File("d:\\demo.txt"); /*if (f.exists()){ f.createNewFile(); }*/ //2.filewriter FileWriter fw=new FileWriter(f); //3.开始动作:输出动作 //一个字符一个字符的往外输出 String str="abc"; for (int i = 0; i < str.length(); i++) { fw.write(str.charAt(i)); } fw.close(); } }
发现:
如果目标文件不存在的话,那么会自动创建此文件
如果目标文件存在的话
new FileWriter(f)相当于对源文件进行覆盖操作。
FileWriter fw=new FileWriter(f,false);相当于对源文件进行覆盖操作,不是追加
FileWriter fw=new FileWriter(f,true);相当于对源文件进行追加操作,而不是覆盖
利用缓冲数组向外输出:
package com.msb.io01; import java.io.File; import java.io.FileWriter; import java.io.IOException; /** * @author : liu * 日期:17:15:34 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test03 { //这是一个main方法:是程序的入口 public static void main(String[] args) throws IOException { //1.有一个目标文件 File f=new File("d:\\demo.txt"); FileWriter fw=new FileWriter(f,true); //3.开始动作:输出动作 String str="hello\n"; char[] chars = str.toCharArray(); fw.write(chars); fw.close(); } }
标签:文件,fr,int,System,案例,复制,read,File,new From: https://www.cnblogs.com/jeldp/p/16891195.html