FileReader与FileWriter
FileReader与FileWriter分别继承Reader和Writer,以字符为单位广泛用于文件操作的节点流。FileReader类用于从文本文件读数据,每次读入一个字符或者一个字符数组;FileWriter类用于从文本文件写数据,每次写入一个字符,一个字符数组或者一个字符串。
FileReader类常用的构造方法:
--- FileReader(File file),在给定从中读取数据的File的情况下创建一个新的FileReader。
--- FileReader(String fileName),在给定从中读取数据的文件名的情况下创建一个新的FileReader。
--- FileReader(FileDescriptor fd),在给定从中读取数据的FileDescriptor 的情况下创建一个新的FileReader。
FileWriter类常用的构造方法:
--- FileWriter(File file),根据给定的file对象构造一个FileWriter对象。注意写入文件时目录下的同名文件会被覆盖。
--- FileWriter(File file,boolean append),根据给定的file对象构造一个FileWriter对象。若append为true则写入文件时目录下的同名文件不会被覆盖,在已有文件的末尾添加内容。
--- FileWriter(FileDescriptor fd),构造与某个文件描述符相关联的FileWriter对象。
--- FileWriter(String fileName),根据给定的文件名构造一个FileWriter对象。
--- FileWriter(String fileName,boolean append),根据给定的f文件名构造一个FileWriter对象。若append为true则写入文件时目录下的同名文件不会被覆盖,在已有文件的末尾添加内容。
注意文件名和文件对象的区别以及是否加true的区别!
代码示例:
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class FileWriterTest {public static void main(String[] args) {FileReader fr=null;FileWriter fw=null;try{File srcFile=new File("D:\\idea\\loafonajob\\untitled\\src\\hello.txt");//创建文件对象File destFile=new File("D:\\idea\\loafonajob\\untitled\\src\\hello1.txt");//创建文件对象fr=new FileReader(srcFile);//用文件对象创建FileReaderfw=new FileWriter(destFile,true);//用文件对象创建FileWriter,加上指示truechar[] cbuf=new char[5];int len;while((len=fr.read(cbuf))!=-1){fw.write(cbuf,0,len);System.out.println(cbuf);}}catch(Exception e){e.printStackTrace();}finally{try{if(fw!=null)fw.close();}catch (IOException e){e.printStackTrace();}finally {try{if(fr!=null)fr.close();}catch (IOException e){e.printStackTrace();}}}}
}
注意FileReader没有指示true,FileWriter有指示true,所以写入文件时不会覆盖,即每运行一次hello1.txt文件都会拷贝一次hello.txt。
注意一定要写清楚hello.txt文件和hello1.txt文件的路径。
hello.txt有以下内容:hello
hello1.txt初始为空,所以以上代码每运行一次hello1.txt文件内容都会被加上hello。
如果没有true,则每次代码运行hello1.txt都会被覆盖这样hello1.txt的内容只有hello不会随运行次数增加而增加。
用文件名创建FileReader和FileWriter,代码示例:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class FileWriterTest {public static void main(String[] args) {FileReader fr=null;FileWriter fw=null;try{fr=new FileReader("D:\\idea\\loafonajob\\untitled\\src\\hello.txt");fw=new FileWriter("D:\\idea\\loafonajob\\untitled\\src\\hello1.txt",true);char[] cbuf=new char[5];int len;while((len=fr.read(cbuf))!=-1){fw.write(cbuf,0,len);System.out.println(cbuf);}}catch(Exception e){e.printStackTrace();}finally{try{if(fw!=null)fw.close();}catch (IOException e){e.printStackTrace();}finally {try{if(fr!=null)fr.close();}catch (IOException e){e.printStackTrace();}}}}
}
可以复制我的代码到idea去测试一下,注意文件路径要用自己电脑的文件路径,推荐文件格式为txt文件。idea可以创建文件,但要加上.txt后缀名,读取文件不要为空,写入文件可以为空。
总结:
java中的操作流的基本过程为以下四步:
1.声明流对象的引用变量,赋值为null。
2.在try中完成对输入流和输出流的操作。
3.在catch中对可能抛出的异常进行捕获处理。
4.在finally中关闭输入流和输出流。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
