Java如何利用线程将文件夹S中十张名字为a1,a2,a3....的图片拷贝至文件夹D中并改名为1,2,3,。。。
时间: 2023-12-03 09:44:49 浏览: 28
可以使用Java的多线程机制实现这个任务。以下是一个简单的实现:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyImages implements Runnable {
private String sourceDir;
private String destDir;
public CopyImages(String sourceDir, String destDir) {
this.sourceDir = sourceDir;
this.destDir = destDir;
}
@Override
public void run() {
File dir = new File(sourceDir);
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
File file = files[i];
String filename = file.getName();
if (filename.startsWith("a")) {
try {
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(new File(destDir, (i+1) + ".jpg"));
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
String sourceDir = "S/";
String destDir = "D/";
CopyImages copyImages = new CopyImages(sourceDir, destDir);
Thread thread = new Thread(copyImages);
thread.start();
}
}
```
这个程序首先创建一个`CopyImages`类实例,然后创建一个线程来运行这个实例。当线程启动时,它会遍历源目录中的所有文件,如果文件名以"a"开头,就把它复制到目标目录中,并用数字命名。注意,这里我们使用了多线程来处理不同的文件,以提高程序的效率。