补全以下代码import java.io.*; public class CopyFile extends Thread{ private String sourcFilePaht;//复制原文件的路径和文件名,如“c:\\ss.rar private String targetFilePaht;// 复制目标文件的路径和文件名,如“d:\\ss.rar public CopyFile(String sourcFilePaht, String targetFilePaht) { super(); this.sourcFilePaht = sourcFilePaht; this.targetFilePaht = targetFilePaht; } public CopyFile() { super(); } //覆写Thread类的run方法 { try { File file1=new File(sourcFilePaht); String filename=file1.getName(); File file2=new File(targetFilePaht); FileInputStream fis=new FileInputStream(file1); BufferedInputStream bis= ; FileOutputStream fos=new FileOutputStream(file2); BufferedOutputStream bos= ; byte bytes[]=new byte[2*1024]; int len=0; while((len= )!=-1){ ; bos.flush(); } bos.close(); fos.close(); bis.close(); fis.close(); System.out.println(filename+"文件复制成功!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("文件复制失败!"); } } }
时间: 2024-01-10 21:01:55 浏览: 80
好的,下面是补全后的代码:
```
import java.io.*;
public class CopyFile extends Thread {
private String sourcFilePaht;//复制原文件的路径和文件名,如“c:\\ss.rar
private String targetFilePaht;// 复制目标文件的路径和文件名,如“d:\\ss.rar
public CopyFile(String sourcFilePaht, String targetFilePaht) {
super();
this.sourcFilePaht = sourcFilePaht;
this.targetFilePaht = targetFilePaht;
}
public CopyFile() {
super();
}
//覆写Thread类的run方法
public void run() {
try {
File file1 = new File(sourcFilePaht);
String filename = file1.getName();
File file2 = new File(targetFilePaht);
FileInputStream fis = new FileInputStream(file1);
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(file2);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte bytes[] = new byte[2*1024];
int len = 0;
while((len = bis.read(bytes)) != -1){
bos.write(bytes, 0, len);
bos.flush();
}
bos.close();
fos.close();
bis.close();
fis.close();
System.out.println(filename + "文件复制成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("文件复制失败!");
}
}
}
```
在上面的代码中,`CopyFile` 类继承了 `Thread` 类,并重写了 `run()` 方法,用来实现文件复制的功能。在 `run()` 方法中,首先根据传入的原文件路径和目标文件路径创建相应的 `File` 对象,然后使用字节缓冲输入输出流实现文件复制的功能。复制完成后,输出复制成功的信息。
需要注意的是,在使用字节缓冲输入输出流时,要先创建相应的输入输出流对象,然后再将它们作为参数传入到字节缓冲输入输出流的构造方法中,如下面的代码所示:
```
FileInputStream fis = new FileInputStream(file1);
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(file2);
BufferedOutputStream bos = new BufferedOutputStream(fos);
```
在复制文件的过程中,需要不断读取原文件中的数据,并将其写入到目标文件中,直到读取到文件末尾,如下面的代码所示:
```
while((len = bis.read(bytes)) != -1){
bos.write(bytes, 0, len);
bos.flush();
}
```
最后,在关闭输入输出流对象时,需要先关闭字节缓冲输入输出流对象,然后再关闭相应的输入输出流对象,如下面的代码所示:
```
bos
阅读全文