21xrx.com
2024-11-05 14:59:23 Tuesday
登录
文章检索 我的文章 写文章
Java多线程复制文件到多个文件夹的代码
2023-07-06 03:12:41 深夜i     --     --
Java 多线程 复制文件 多个文件夹 代码

Java作为一门高级语言,在程序员的编程世界中有着广泛的应用。它不仅能够编写各种类型的程序,并且可以利用多线程和其他功能来优化程序的运行效率。Java多线程技术是一项强大的功能,它可以允许程序同时运行多个任务。当需要将文件复制到多个文件夹时,使用Java多线程技术会有很多优势。下面,我们来看一下Java多线程复制文件到多个文件夹的代码:


import java.io.*;

import java.util.*;

public class MultiThreadCopyFile implements Runnable {

private String sourceFileName; //源文件名称

private String[] destDirectories; //目标文件夹路径

private int bufferSize = 1024; //缓存大小

public MultiThreadCopyFile(String sourceFileName, String[] destDirectories)

this.sourceFileName = sourceFileName;

this.destDirectories = destDirectories;

@Override

public void run() {

File sourceFile = new File(sourceFileName);

for (String destDirectory : destDirectories) {

File destFile = new File(destDirectory + sourceFile.getName());

copyFile(sourceFile, destFile);

System.out.println("File copied to " + destFile.toString());

}

}

public void copyFile(File sourceFile, File destFile) {

try (InputStream in = new FileInputStream(sourceFile);

OutputStream out = new FileOutputStream(destFile)) {

byte[] buffer = new byte[bufferSize];

int length;

while ((length = in.read(buffer)) > 0) {

out.write(buffer, 0, length);

}

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

String sourceFileName = "source.txt"; //源文件名称

String[] destDirectories = new String[] "C:/dest1/"; //目标文件夹路径

Thread[] threads = new Thread[destDirectories.length];

for (int i = 0; i < threads.length; i++) {

threads[i] = new Thread(new MultiThreadCopyFile(sourceFileName, new String[] {destDirectories[i]}));

threads[i].start();

}

for (Thread thread : threads) {

try {

thread.join();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

System.out.println("Files copied successfully!");

}

}

上述代码定义了一个名为MultiThreadCopyFile的类,实现了Runnable接口。该类通过构造方法中传入源文件名称和目标文件夹路径数组来初始化线程对象。在run()函数中,使用for循环复制源文件到多个目标文件夹。其中,每次循环都会把源文件复制一份到当前目标文件夹中。在copyFile()方法中,使用缓存数组读取源文件并将其写入目标文件。最后,在main()方法中使用Thread数组创建多个线程对象,并通过join()方法来等待所有线程的执行结束。最后输出提示信息"Files copied successfully!"表示所有文件已经成功复制。

总的来说,Java多线程技术不仅能够提高程序的运行效率,还能够实现多个复杂的任务。在文件复制领域中,Java多线程技术同样能够发挥其优势,通过上述代码的实现,我们可以轻松地将文件复制到多个文件夹。

  
  
下一篇: C++大小写转换

评论区

{{item['qq_nickname']}}
()
回复
回复