Java-IO流系列-FileReader与FileWriter
2021/6/27 11:44:04
本文主要是介绍Java-IO流系列-FileReader与FileWriter,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
FileReader读取文件
查看文件的相对路径
示例一:查看文件的相对路径
package com.dreamcold.io; import java.io.File; public class Demo01 { public static void main(String[] args) { File file=new File("test.txt"); System.out.println(file.getAbsolutePath()); } }
输出:
读取txt文件
写法一
-
实例化File类的对象, 指明要操作的文件
-
提供具体的源
-
数据的读入,read():返回读入的一个字符,如果达到文件末尾返回-1
-
关闭流
package com.dreamcold.io; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Demo01 { public static void main(String[] args) throws IOException { // 1.实例化File类的对象, 指明要操作的文件 File file=new File("test.txt"); //2.提供具体的源 FileReader fr=new FileReader(file); //3.数据的读入, //read():返回读入的一个字符,如果达到文件末尾返回-1 int data=fr.read(); while (data!=-1){ System.out.print((char)data); data=fr.read(); } //关闭流 fr.close(); } }
结果
写法二
package com.dreamcold.io; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Demo01 { public static void main(String[] args) throws IOException { // 1.实例化File类的对象, 指明要操作的文件 File file=new File("test.txt"); //2.提供具体的源 FileReader fr=new FileReader(file); //3.数据的读入, //read():返回读入的一个字符,如果达到文件末尾返回-1 int data; while((data=fr.read())!=-1){ System.out.print((char)data); } //关闭流 fr.close(); } }
输出:
写法三-加异常处理
package com.dreamcold.io; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Demo01 { public static void main(String[] args) { FileReader fr=null; try { // 1.实例化File类的对象, 指明要操作的文件 File file=new File("test.txt"); //2.提供具体的源 fr=new FileReader(file); //3.数据的读入, //read():返回读入的一个字符,如果达到文件末尾返回-1 int data; while((data=fr.read())!=-1){ System.out.print((char)data); } //关闭流 }catch (IOException e){ e.printStackTrace(); }finally { try { if (fr!=null){ fr.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
说明点:
- read()的理解:返回读入的一一个字符。如果达到文件末尾,返回-1
- 异常的处理:为了保证流资源-定可以执行关闭操作。需要使用try-catch-finally处理
- 读入的文件一定要存在,否则就会报FileNotFoundException. |
FileReader的重载方法read
package com.dreamcold.io; import java.io.File; import java.io.FileReader; import java.io.IOException; public class Demo02 { public static void main(String[] args) { FileReader fr=null; try { File file=new File("test.txt"); fr=new FileReader(file); char[] cbuf=new char[5]; int len; while((len=fr.read(cbuf))!=-1){ for (int i=0;i<len;i++){ System.out.print(cbuf[i]); } } }catch (IOException e){ e.printStackTrace(); }finally { try { if (fr!=null){ fr.close(); } }catch (IOException e){ e.printStackTrace(); } } } }
结果:
注意:
- 每次读取5个字符数据大小
- 读取到末尾的时候,可能不够5个字符了,那么我们要确定这次读取有几个字符,用字符数len循环
FileReader写出
- 提供File类的对象,指明写出到的文件
- 提供FileWriter的对象, 用于数据的写出
- 写出的操作
- 流资源的关闭
package com.dreamcold.io; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Demo03 { public static void main(String[] args) throws IOException { //创建文件 File file=new File("write.txt"); //创建FileWriter FileWriter fw=new FileWriter(file); //写入文字 fw.write("I love coding...\n"); fw.write("I love see a movie\n"); //关闭 fw.close(); } }
效果:
注意:
说明:
1.输出操作,对应的File可以不存在的。并不会报异常
2.File对应的硬盘中的文件
- 如果不存在,在输出的过程中,会自动创建此文件。
- File,对应的硬盘中的文件如果存在:
- 如果流使用的构造器是: FileWriter(file, false) / FileWriter(file):原有文件的覆盖
- 如果使用的构造器是: FileWriter(file, true):不会对原有文件覆盖,而是在原有文件基础上追加内容
文件的复制操作
- 创建File类的对象,指明读入和写出的文件
- 创建输入流和输出流的对象
- 数据的读入和写出操作
- 关闭流资源
package com.dreamcold.io; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Demo04 { public static void main(String[] args) { FileReader fr=null; FileWriter fw=null; try { File srcFile=new File("test.txt"); File destFile=new File("test1.txt"); fr=new FileReader(srcFile); fw=new FileWriter(destFile); char[] buf=new char[5]; int len; while((len=fr.read(buf))!=-1){ fw.write(buf,0,len); } }catch (IOException e){ e.printStackTrace(); }finally { try { if (fr!=null){ fr.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (fw!=null){ fw.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
效果:
注意:
- 字符流主要是用来处理字符的
- 无法处理二进制的图片文件的复制2
这篇关于Java-IO流系列-FileReader与FileWriter的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南