java中的FileReader和FileWriter读写流
作者:Rnr_..
FileReader和FileWriter读写流
在java中对数据输入输出的操作陈作为流 我们对不同的文件进行操作,或者对操作文件进行输入和输出时所用的流都是不同的。
因此在java.io的包下存在很多流的类或者接口提供给我们对应的操作
流的原理:
- 输入流(input):将外部的文件通过流读取到内存中
- 输出流(output):将内存中的文件通过流输出到硬盘等储存设备中
分类:
- 按照操作单位分为;字节流,字符流
- 按照流向不同分为;输入流,输出流
- 按照角色不同分为;节点流,处理流
io流体系:
- FileReader与FileWriter
- FileReader是针对字符型文件(后缀.txt)的流,根据定义的不同也可以称其为字符流,节点流,输入流
- FileWriter是针对是针对字符型文件(后缀.txt)的流,根据定义的不同也可以称其为字符流,节点流,输出流
FileReader的使用
1,实例化一个File类用与操作的对象
2,实例化一个FileReader类并且将file对象作为参数传入它的构造器中。
3,用FileReader的方法将数据读入 FileReader读入数据的方法是read()方法 —>read()的空参构造器:返回读入的一个字符并继续往下读如果读到最后一个元素返回-1 —>read(char cbuf[])一次读入cbuf中字符个元素的个数如果到达文件末尾返回-1
4,关闭流 close();方法流不会自动关闭,必须手动关闭,不然会浪费资源
public class FileReaderAndFileWriter { public static void main(String[] args) { FileReader flr = null; try { File file = new File("hello.txt"); flr = new FileReader(file); char[] cbuf = new char[2]; int read = flr.read(cbuf); while (read != -1){ for (int i = 0 ; i < read ; i++){ System.out.print(cbuf[i]); } read = flr.read(cbuf); } } catch (IOException e) { e.printStackTrace(); } finally { if(flr != null){//防止空指针 try { flr.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
注:整个过程中文件会报错,而我们需要使用try-catch-finally来解决该异常,如果使用throws的话中途抛出异常之后不会去执行最后的close();方法 则该流不会关闭会浪费资源
FileWriter的使用:FileWriter其实使用步骤和FileReader是一样的
1,实例化一个File类
2,实例化一个FileWriter类并且将File的实例作为参数传入FileWriter的构造器中 —> new FileWriter(file,flase);默认情况是flase; 修改原有文件的内容改为添加的数据 —>new FileWriter(file,true); 在原有文件的基础上添加写入的数据
3,使用write方法写入数据到指定文件夹中 如果实例化的File类的file文件不存在会自动添加 public void write(char cbuf[]) :一次写入cbuf指定个数的数据 public void write(char cbuf[], int off, int len):在传入的cbuf数组中从off开始写入,一次写入len个数据
4,关闭FileWriter流:colse();方法
例’
public class FileReaderAndFileWriter { public static void main(String[] args) { FileWriter flw = null; try { //写入的文件的文件夹名字 File file = new File("hw.txt"); flw = new FileWriter(file); //写入的内容 flw.write("hello JAVA"); } catch (IOException e) { e.printStackTrace(); } finally { try { flw.close(); } catch (IOException e) { e.printStackTrace(); } } } }
利用FileReader和FileWriter实现对文本文件的复制
public class FileReaderAndFileWriter { public static void main(String[] args){ FileReader flr = null; FileWriter flw = null; try { //file是需要复制的文件,file1是要复制到的地方 File file = new File("hello.txt"); File file1 = new File("hw.txt"); flr = new FileReader(file); flw = new FileWriter(file1); char[] cbuf = new char[5]; int read = flr.read(cbuf); while (read != -1){ // for(int i = 0; i < cbuf.length; i++){ // flw.write(cbuf, 0 , read); // } //如果要用write方法直接写入的话需要使用下面三个参数的方法 //否则会打印重复flw.write(cbuf);hello worldworl flw.write(cbuf, 0 , read); read = flr.read(cbuf); } } catch (IOException e) { e.printStackTrace(); } finally { if(flr != null){ try { flr.close(); } catch (IOException e) { e.printStackTrace(); } } if(flw != null){ try { flw.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
到此这篇关于java中的FileReader和FileWriter读写流的文章就介绍到这了,更多相关FileReader和FileWriter读写流内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!