import java.io.*; public class FileCopy { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入源文件名:"); String srcFileName = scanner.nextLine(); System.out.print("请输入目标文件名:"); String destFileName = scanner.nextLine(); try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(srcFileName)); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(destFileName))) { byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } System.out.println("拷贝文件成功!"); } catch (IOException e) { System.out.println("拷贝文件失败:" + e.getMessage()); } 请分析这段代码
时间: 2023-07-15 14:13:57 浏览: 109
这段代码实现了文件拷贝的功能。具体分析如下:
1. 程序从控制台输入源文件名和目标文件名。
2. 使用 try-with-resources 语句来打开源文件和目标文件的输入输出流,以确保在使用完后关闭它们。
3. 定义一个 1024 字节大小的缓冲区 byte[] buffer,用于存储从源文件读取的数据。
4. 使用 while 循环读取源文件中的数据,将其写入目标文件中。如果读取的字节数为 -1,则表示已经读取完整个文件,结束循环。
5. 在读取和写入数据的过程中,如果发生异常,会被 catch 语句捕获。程序将输出错误信息,指示拷贝文件失败。
6. 如果没有发生异常,则表示文件拷贝成功。程序将输出一条成功信息。
总之,这段代码通过缓冲输入输出流和缓冲区的方式,实现了高效的文件拷贝。
相关问题
编写java程序将一个指定文件内容,读取后,保存到另外一个文件当中。 【输入形式】 给定文件名为filein.txt。 【输出形式】 输出到文件fileout.txt中。 【样例输入】 文件filein.txt的内容为: #include <stdio.h> void main() { FILE * IN; if((IN=fopen("in.txt","r"))==NULL) { printf("Can’t open in.txt!"); return; } fclose(IN); } 【样例输出】 文件fileout.txt的内容应为: #include <stdio.h> void main() { FILE * IN; if((IN=fopen("in.txt","r"))==NULL) { printf("Can’t open in.txt!"); return; } fclose(IN); } 【样例说明】 即将文件filein.txt中字符分别读出,然后写入文件fileout.txt中。
好的,以下是 Java 代码实现:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class FileCopy {
public static void main(String[] args) {
String inputFile = "filein.txt";
String outputFile = "fileout.txt";
try {
Scanner scanner = new Scanner(new File(inputFile));
PrintWriter writer = new PrintWriter(new File(outputFile));
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
writer.println(line);
}
scanner.close();
writer.close();
System.out.println("File copied successfully!");
} catch (FileNotFoundException e) {
System.out.println("File not found: " + e.getMessage());
}
}
}
```
代码解释:
1. 定义了输入文件名为 `filein.txt`,输出文件名为 `fileout.txt`。
2. 使用 `Scanner` 读取输入文件内容,使用 `PrintWriter` 写入输出文件内容。
3. 通过循环逐行读取输入文件内容,并将每行内容写入输出文件中。
4. 关闭输入输出流。
5. 捕获可能的文件不存在异常。
6. 输出复制成功信息。
4.利用文件输入/输出流和缓冲流编写一个实现文件拷贝的程序,源文件名和目标文件名通过Scanner类从控制台获取。
以下是实现文件拷贝的程序:
```java
import java.io.*;
public class FileCopy {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入源文件名:");
String sourceFileName = reader.readLine();
System.out.print("请输入目标文件名:");
String targetFileName = reader.readLine();
FileInputStream fis = new FileInputStream(sourceFileName);
FileOutputStream fos = new FileOutputStream(targetFileName);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
System.out.println("拷贝完成!");
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
程序首先创建一个BufferedReader对象,从控制台获取源文件名和目标文件名。然后创建一个FileInputStream对象和一个FileOutputStream对象,分别用于读取源文件和写入目标文件。程序使用一个byte数组作为缓冲区,每次读取1024个字节,并将其写入目标文件中。最后关闭输入流和输出流,输出拷贝完成的信息。
阅读全文