- 执行步骤
- 1.创建读取或写出的File类的对象
- 2.创建输入或输出流
- FileReader
- FileReader(File file): 创建一个新的 FileReader ,给定要读取的File对象。
- FileReader(String fileName): 创建一个新的 FileReader ,给定要读取的文件的名称。
- FileWriter
- FileWriter(File file): 创建一个新的 FileWriter,给定要读取的File对象。
- FileWriter(String fileName): 创建一个新的 FileWriter,给定要读取的文件的名称。
- FileWriter(File file,boolean append): 创建一个新的 FileWriter,指明是否在现有文件末尾追加内容。
- FileReader
- 3.执行具体的读入或写出的过程
- 读入:read(char [] c)
- 写出:write(String str)/write(char [] c,0,len)
- 4.关闭流资源,避免内存泄漏
- 代码如下:
File f1=new File("D:\\io\\io1\\Test1.txt"); File f2=new File("D:\\io\\io1\\Test2.txt"); //2. 创建FileReader/FileWriter流对象,将File类的对象作为参数传递到的构造器中 FileReader r = null; FileWriter w2=null; try { r=new FileReader(f1); w2=new FileWriter(f2); /* * 3.执行具体的读入或写出的过程 * read(char [] c) * write(String str)/write(char [] c,0,len) */ char [] c=new char [5]; int len=0; while((len=r.read(c))!=-1) { for(int i=0;i<len;i++) { System.out.print(c[i]); } w2.write(c, 0, len); } }catch(IOException e) { e.printStackTrace(); }finally { //4.关闭流资源 try { if(r!=null) { r.close(); } if(w2!=null) { w2.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
- 注意点:
- 1.因为涉及到流资源的关闭操作,所以出现异常的话,需要使用try-catch-finally的方式来处理异常
- 2.对于输入流来讲,要求File类的对象对应的物理磁盘上的文件必须存在。否则,会报FileNotFoundException异常。对于输出流来讲,File类的对象对应的物理磁盘上的文件可以不存在。
- 如果此文件不存在,则在输出的过程中,会自动创建此文件,并写出数据到此文件中。
- 如果此文件存在,使用
- FileWriter(File file)或 FileWriter(File file,false):输出数据过程中,会新建同名的文件对现有的文件进行覆盖。
- FileWriter(File file,true):输出数据过程中,会在现有的文件的末尾追加写出内容。
- 常用方法说明:
- public int read(): 从输入流读取一个字符。 虽然读取了一个字符,但是会自动提升为int类型。返回该字符的Unicode编码值。如果已经到达流末尾了,则返回-1。
- public int read(char[] cbuf): 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。每次最多读取cbuf.length个字符。返回实际读取的字符个数。如果已经到达流末尾,没有数据可读,则返回-1。
- public int read(char[] cbuf,int off,int len):从输入流中读取一些字符,并将它们存储到字符数组 cbuf中,从cbuf[off]开始的位置存储。每次最多读取len个字符。返回实际读取的字符个数。如果已经到达流末尾,没有数据可读,则返回-1。
- public void close():关闭此流并释放与此流相关联的任何系统资源。
- public void write(int c) :写出单个字符。
- public void write(char[] cbuf):写出字符数组。
- public void write(char[] cbuf, int off, int len):写出字符数组的某一部分。off:数组的开始索引;len:写出的字符个数。
- public void write(String str):写出字符串。
- public void write(String str, int off, int len) :写出字符串的某一部分。off:字符串的开始索引;len:写出的字符个数。
- public void flush():刷新该流的缓冲。