gpt4 book ai didi

java - 将文件列表从一个位置复制到另一个位置

转载 作者:行者123 更新时间:2023-11-29 03:22:07 25 4
gpt4 key购买 nike

我有一个 txt 文件中的文件名列表。

说A,B,C,D

现在我知道文件列表存在于 C:/data/ 中.此数据文件夹还包含其他文件,如 A、、B、C、D、A1、B1 等...,现在我想从 C:/data/ 复制这些 A、B、C、D 文件至 C:/dataOne/

我有一个 Java 代码,它只将一个文件从一个位置复制到另一个位置。但是我在 txt 中有文件名列表。文件。

这是我试过的。

public static void main(String[] args)
{

InputStream inStream = null;
OutputStream outStream = null;

try{

File afile =new File("C:\\folderA\\A.txt");
File bfile =new File("C:\\folderB\\A.txt");

inStream = new FileInputStream(afile);
outStream = new FileOutputStream(bfile);

byte[] buffer = new byte[1024];

int length;
//copy the file content in bytes
while ((length = inStream.read(buffer)) > 0){

outStream.write(buffer, 0, length);

}

inStream.close();
outStream.close();

System.out.println("File is copied successful!");

}catch(IOException e){
e.printStackTrace();
}
}

我的 .txt 中有大约 100 个文件名文件。

如何将所有 100 个文件从一个位置复制到另一个位置。

最佳答案

如果您使用 Java 7 或更高版本,则可以执行此操作:

final Path srcdir = Paths.get("C:\\data");
final Path dstdir = Paths.get("C:\\dataOne");

for (final Path path: Files.newDirectoryStream(srcdir))
Files.copy(path, dstdir.resolve(path.getFileName()));

如果您不想复制所有文件,您可以使用 DirectoryStream.Filter 过滤 DirectoryStream


如果您要复制的文件的名称在一个文件中,请执行以下操作:

final Path fileNames = Paths.get("filewithfilenames");
final List<String> allFilesByName
= Files.readAllLines(fileNames, StandardCharsets.UTF_8);

然后使用Paths.get()allFilesByName 的每一行获取一个路径。根据这些路径是相对路径还是绝对路径,您可能需要针对 srcdir 执行 .resolve()


Java 8 使这更容易,因为它有一个 Files.lines();这意味着你可以 .map()Path 然后是 .forEach() 路径,你会 Files.copy()

关于java - 将文件列表从一个位置复制到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23010727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com