在Java中,读写文件是一项基本操作。文件输入输出是Java程序在与外部环境通信过程中至关重要的一种方式。本文将介绍Java读写文件的几种方式,包括字符流、字节流、缓冲流等,并给出相应的示例代码,来帮助你更好地了解和应用这些方法。
一、字符流
字符流是以字符为单位操作的流。在Java中,字符流主要有FileReader和FileWriter两个类。
1. FileReader
FileReader类用于读取字符文件。其构造方法如下:
FileReader(String fileName)
FileReader(File file)
接下来是一个FileReader的例子:
```
try{
FileReader fr=new FileReader("test.txt");
int ch;
while((ch=fr.read())!=-1){
System.out.print((char)ch);
}
}catch(IOException e){
e.printStackTrace();
}
```
FileReader读取文件的步骤:
- 创建一个FileReader对象。
- 使用read()方法读取文件。
- 关闭FileReader对象。
2. FileWriter
FileWriter类用于写入字符文件。其构造方法如下:
FileWriter(String fileName)
FileWriter(File file)
接下来是一个FileWriter的例子:
```
try{
FileWriter fw=new FileWriter("test.txt");
fw.write("Hello FileWriter!");
fw.close();
}catch(IOException e){
e.printStackTrace();
}
```
FileWriter写入文件的步骤:
- 创建一个FileWriter对象。
- 使用write()方法写入文件。
- 关闭FileWriter对象。
二、字节流
字节流是以字节为单位操作的流,常用于读写图片、声音、视频等文件。在Java中,字节流主要有FileInputStream和FileOutputStream两个类。
1. FileInputStream
FileInputStream类用于读取字节文件。其构造方法如下:
FileInputStream(String fileName)
FileInputStream(File file)
接下来是一个FileInputStream的例子:
```
try{
FileInputStream fis=new FileInputStream("test.txt");
int len;
byte[] bytes=new byte[1024];
while((len=fis.read(bytes))!=-1){
System.out.print(new String(bytes,0,len));
}
fis.close();
}catch(IOException e){
e.printStackTrace();
}
```
FileInputStream读取文件的步骤:
- 创建一个FileInputStream对象。
- 使用read()方法读取文件。
- 关闭FileInputStream对象。
2. FileOutputStream
FileOutputStream类用于写入字节文件。其构造方法如下:
FileOutputStream(String fileName)
FileOutputStream(File file)
接下来是一个FileOutputStream的例子:
```
try{
FileOutputStream fos=new FileOutputStream("test.txt",true);
fos.write("Hello FileOutputStream!".getBytes());
fos.close();
}catch(IOException e){
e.printStackTrace();
}
```
FileOutputStream写入文件的步骤:
- 创建一个FileOutputStream对象。
- 使用write()方法写入文件。
- 关闭FileOutputStream对象。
三、缓冲流
缓冲流是在字节流或字符流基础上增加了高效缓冲区的流,能够提高程序读写文件的效率。在Java中,缓冲流主要有BufferedInputStream、BufferedOutputStream和BufferedReader、BufferedWriter两个类。
1. BufferedInputStream和BufferedOutputStream
BufferedInputStream类和BufferedOutputStream类是对FileInputStream和FileOutputStream类的封装,提供了缓存能力。其构造方法如下:
BufferedInputStream(InputStream in)
BufferedOutputStream(OutputStream out)
接下来是一个BufferedInputStream和BufferedOutputStream的例子:
```
try{
FileInputStream fis = new FileInputStream("test.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("testcopy.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
byte[] bytes=new byte[1024];
int len;
while((len=bis.read(bytes))!=-1){
bos.write(bytes,0,len);
}
bis.close();
bos.flush();
bos.close();
}catch(IOException e){
e.printStackTrace();
}
```
BufferedInputStream和BufferedOutputStream的读写文件步骤与FileInputStream和FileOutputStream基本相同,只是多了一个缓冲区。
2. BufferedReader和BufferedWriter
BufferedReader类和BufferedWriter类是对FileReader和FileWriter类的封装,提供了缓存能力。其构造方法如下:
BufferedReader(Reader in)
BufferedWriter(Writer out)
接下来是一个BufferedReader和BufferedWriter的例子:
```
try{
FileReader fr=new FileReader("test.txt");
BufferedReader br=new BufferedReader(fr);
FileWriter fw=new FileWriter("testcopy.txt");
BufferedWriter bw=new BufferedWriter(fw);
String str;
while((str=br.readLine())!=null){
bw.write(str);
bw.newLine();
}
br.close();
bw.flush();
bw.close();
}catch(IOException e){
e.printStackTrace();
}
```
BufferedReader和BufferedWriter的读写文件步骤与FileReader和FileWriter基本相同,只是多了一个缓冲区。
总结
以上介绍了Java读写文件的几种方式,包括字符流、字节流、缓冲流等。不同的流有其各自的优缺点,大家可以根据具体需求来选择适合自己的方式。
参考文献:
[1] https://www.imooc.com/article/48752
[2] https://www.runoob.com/java/java-file-input-output.html
壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。
我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复