文件的写入
//1File类的实例化 File file = new File("hello.txt"); //2.提供FileWriter的对象,用于数据的写出 FileWriter fw=new FileWriter(file); fw.write("hello world!\n"); fw.write("xitu"); //资源的关闭 fw.close();
- 输出操作,对应的File可以不存在,并不会报异常
- File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件。
- File对应的硬盘中的文件如果存在:
- 如果流使用的构造器是FileWriter(file,false)/FileWriter(file):对原有文件覆盖
- 如果流使用的构造器是:FileWriter(file.true):不会对原有文件覆盖,而是在原有文件后追加内容
文件的写出
//1File类的实例化 File file = new File("hello.txt"); File data=new File("hello2.txt"); //2.创建输入流和输出流的对象 FileReader fr=new FileReader(file); FileWriter fw=new FileWriter(data); //3.数据的读入和写出操作 char[] cubf=new char[5]; int len;//记录每次读入到cubf数组中的字符的个数 while ((len=fr.read(cubf)) !=-1){ //每次写出len个字符 fw.write(cubf,0,len); } fw.close();
- 如果是图片/视频的话不能用字符流进行处理
使用字节流读入文件
//1File类的实例化 File file = new File("hello.txt"); //2.造流 FileInputStream fis=new FileInputStream(file); //3.读数据 byte[] butter=new byte[5]; int len; while ((len=fis.read(butter))!=-1){ String str=new String(butter,0,len); System.out.print(str); }
- 使用字节流FileInputStream处理文本是可能出现乱码的
OutputStream & Writer
OutputStream 和 Writer 也非常相似:
- void write(int b/int c);
- void write(byte[] b/char[] cbuf);
- void write(byte[] b/char[] buff, int off, int len);
- void flush();
- void close(); 需要先刷新,再关闭此流
- 因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来替换字符数组,即以 String 对象作为参数
- void write(String str);
- void write(String str, int off, int len);
- FileOutputStream 从文件系统中的某个文件中获得输出字节。FileOutputStream 用于写出非文本数据之类的原始字节流。要写出字符流,需要使用 FileWriter