关于Java二进制读写文件的学习和个人总结
知识储备
1、什么是二进制文件?
广义上来说一切文件都是二进制文件,狭义上来说采用非字符编码集的二进制文件才是二进制文件,比如视频图片和音乐文件等等。
今天总结的是字符型编码的二进制文件读写,文本文件.txt的读写
2、读取文件所需要的包和类
读取文件需要用到java.io这个和文件读取有关的包,读取文本文件需要用到如下各类:
- FileInputStream(节点类):直接操作文件的类,将数据从文件读取到java中
- InputStreamReader(转换类):字节到字符间转换的类,将读取进来的二进制数据转换成java能理解的字符
- BufferedReader(修饰类):缓存数据流,提高读取效率
3、写入文件所需要的包和类
读取文件需要用到java.io这个和文件读取有关的包,写入文本文件需要用到如下各类:
- FileOutputStream(节点类):直接操作文件的类,将java中的数据写入到文件中
- OutputStreamWriter(转换类):字符到字节间转换的类,将java中获取到的字符转换成文件能够写入的二进制数据
- BufferedWriter(修饰类):缓存数据流,提高写入效率
代码展示
1、写入文本文件代码展示
写入文件代码:
package IO;
import java.io.*;
public class WriteTest {
public static void main(String[] args) throws IOException {
FileOutputStream fos=null; //节点类
OutputStreamWriter osw=null; //字符类
BufferedWriter bw=null; //装饰类
fos=new FileOutputStream("D:/temp/hello.txt");//传入文件所在路径
osw=new OutputStreamWriter(fos,"UTF-8"); //将fos作为参数传入osw,并且设置字符编码
bw=new BufferedWriter(osw);
try {
bw.write("我是瓶子中的玉米");
bw.newLine(); //换行
bw.write("我喜欢学习java");
bw.newLine();
System.out.println("文本写入成功");
} catch (IOException e) {
e.printStackTrace();
}
finally{
bw.close(); //涉及到IO流操作的时候一定要记得关闭文件,关闭最外层流即可关掉所有的流
}
}
}
2、读取文本文件代码展示
读取文件代码:
package IO;
import java.io.*;
public class ReadTest {
public static void main(String[] args) throws IOException {
FileInputStream fis=null; //节点类
InputStreamReader isr=null; //转换类
BufferedReader br=null; //装饰类
fis= new FileInputStream("D:/temp/hello.txt"); //填写读取文件所需要的路径
isr= new InputStreamReader(fis,"UTF-8"); //传入fis 并且设置字符编码 ,需要与写入文件时候的编码相同
br=new BufferedReader(isr);
String text;
try {
while ((text=br.readLine())!=null)
{
System.out.println(text); //输出每次读取到的行数据
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
br.close(); 涉及到IO流操作的时候一定要记得关闭文件,关闭最外层流即可关掉所有的流
}
}
}
总结反思
1、java进程和文件管理的OS系统属于平行的两个系统,两个系统交流需要调用java下的io包来作为桥梁
2、java在文件读写的时候,有时候会收到操作系统提示权限不够的错误,要注意读写文件的位置
2、除了上述用到的类以外,java下的io包还提供了丰富的类包用于数据操作,具体可以查询java的API文档
3、除文本文件的读写外,还有二进制文件的读写,其使用方法和文本文件读取操作类似
4、文件读取在之后的java学习中会广泛应用,如java网络编程 和java web项目开发中