FileInputStream和FileOutputStream可以拷贝文本文件吗
时间: 2024-05-02 10:15:23 浏览: 104
是的,FileInputStream和FileOutputStream可以用于拷贝文本文件。可以通过以下方式实现:
```java
try {
FileInputStream input = new FileInputStream("source.txt");
FileOutputStream output = new FileOutputStream("destination.txt");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
System.out.println("文件拷贝成功!");
} catch (IOException e) {
e.printStackTrace();
}
```
其中,source.txt是源文件的名称,destination.txt是目标文件的名称。拷贝过程中,我们使用了一个缓存区,每次读取和写入1024个字节的数据。如果想要拷贝其他类型的文件(如图片、音频等),也可以使用同样的方式,只需要将源文件和目标文件的名称修改即可。
相关问题
1、 编写一个程序,分别使用字节流和字符流拷贝一个文本文件。 提示: 需要在当前路径下,先建立一个src.txt的文本文件,内容如下图所示,然后通过文件字节输出流FileOutputStream在当前路径下建立dest1.txt文本文件,并且写入数据。通过文件字符输出流FileWriter在当前路径下建立dest2.txt文本文件,并且写入数据。 1) 使用FileInputStream、FileOutputStream和FileReader、FileWriter分别进行拷贝。 2) 使用字节流拷贝时,定义一个1024长度的字节数组作为缓冲区,使用字符流拷贝,使用BufferedReader和BufferedWriter包装流进行包装
好的,以下是使用字节流和字符流分别拷贝文本文件的代码示例:
1. 使用字节流拷贝文件
```java
import java.io.*;
public class ByteStreamCopy {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("src.txt");
FileOutputStream fos = new FileOutputStream("dest1.txt");
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
fis.close();
fos.close();
System.out.println("拷贝完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
2. 使用字符流拷贝文件
```java
import java.io.*;
public class CharacterStreamCopy {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("src.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("dest2.txt");
BufferedWriter bw = new BufferedWriter(fw);
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
br.close();
bw.close();
System.out.println("拷贝完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
注意:以上代码示例仅供参考,实际应用中需要对异常进行处理。
请编写程序,分别使用字节流和字符流拷贝一个文本文件。要求如下: 1.使用FileInputStream、FileOutputStream和FileReader、FileWriter分别进行拷贝。 2.使用字节流拷贝时,定义一个长度为1024的字节数组作为缓冲区;使用字符流进行拷贝时,使用BufferedReader和BufferedWriter包装流进行包装
使用字节流进行拷贝:
```java
import java.io.*;
public class ByteStreamCopy {
public static void main(String[] args) {
File sourceFile = new File("source.txt");
File targetFile = new File("target.txt");
try (FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(targetFile)) {
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
使用字符流进行拷贝:
```java
import java.io.*;
public class CharStreamCopy {
public static void main(String[] args) {
File sourceFile = new File("source.txt");
File targetFile = new File("target.txt");
try (FileReader fr = new FileReader(sourceFile);
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter(targetFile);
BufferedWriter bw = new BufferedWriter(fw)) {
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
阅读全文