C# 根据文件名选择数千个文件

C# 根据文件名选择数千个文件,c#,java,python,windows,C#,Java,Python,Windows,我有一个问题,我有一个包含30k文件名的文本文件,我需要从包含100k其他文件的windows文件夹中提取该文件 这可能是一个相当简单的问题,但是,我已经在网上广泛搜索,找不到解决方案,也许我使用了错误的术语 可以使用Windows批处理文件、c、Java、Python等等 可以将文件重命名为xxfilename这样我就可以按文件名排序了吗 提前感谢。如果文件包含文件名列表,您可以读取它们并将文件复制到您的目标 比如: string destination = "D:\\"; foreach (

我有一个问题,我有一个包含30k文件名的文本文件,我需要从包含100k其他文件的windows文件夹中提取该文件

这可能是一个相当简单的问题,但是,我已经在网上广泛搜索,找不到解决方案,也许我使用了错误的术语

可以使用Windows批处理文件、c、Java、Python等等

可以将文件重命名为xxfilename这样我就可以按文件名排序了吗


提前感谢。

如果文件包含文件名列表,您可以读取它们并将文件复制到您的目标

比如:

string destination = "D:\\";
foreach (var filename in File.ReadAllLines("fileWithFilenames").Where(f => File.Exists(f)))
{
    File.Copy(filename, Path.Combine(destination, Path.GetFileName(filename)));
}

如果文件包含文件名列表,您可以读取它们并将文件复制到您的目标

比如:

string destination = "D:\\";
foreach (var filename in File.ReadAllLines("fileWithFilenames").Where(f => File.Exists(f)))
{
    File.Copy(filename, Path.Combine(destination, Path.GetFileName(filename)));
}
使用c:

foreach (var filePath in File.ReadAllLines(indexFile))
{
    if (File.Exists(filePath))
    {
        var destinationPath = Path.Combine(destinationRoot, Path.GetFileName(filePath));
        File.Copy(filePath, destinationPath);
    }
}
使用c:

foreach (var filePath in File.ReadAllLines(indexFile))
{
    if (File.Exists(filePath))
    {
        var destinationPath = Path.Combine(destinationRoot, Path.GetFileName(filePath));
        File.Copy(filePath, destinationPath);
    }
}

在这些方面可以做些什么

    BufferedReader reader = new BufferedReader(new FileReader("somefile"));
    String line;
    File file;

    File folder = new File("somefolder");
    List<String> files = Arrays.asList(folder.list());

    while((line = reader.readLine()) != null) {
        if(files.contains(line)) {
            file = new File(line);
            // do something with the file
        }
    }

在这些方面可以做些什么

    BufferedReader reader = new BufferedReader(new FileReader("somefile"));
    String line;
    File file;

    File folder = new File("somefolder");
    List<String> files = Arrays.asList(folder.list());

    while((line = reader.readLine()) != null) {
        if(files.contains(line)) {
            file = new File(line);
            // do something with the file
        }
    }
使用批处理文件:

setlocal
set destination=c:\Temp\Destination

for /f %%f in (index.txt) do (
    copy "%%f" "%destination%"
)

endlocal
使用批处理文件:

setlocal
set destination=c:\Temp\Destination

for /f %%f in (index.txt) do (
    copy "%%f" "%destination%"
)

endlocal

如果30K文件名的模式类似,那么您可以使用FileFilter从Java中的文件夹中提取文件。谢谢Sudhanshu,但它们完全是随机的。那么文件包含文件名?或者您需要在数千个其他文件中找到包含名称的文件?也许可以根据文件名重命名30k文件。如果30k文件名的模式相似,然后,您可以使用FileFilter从Java中的文件夹中提取文件。谢谢Sudhanshu,但它们完全是随机的。所以文件包含文件名?或者你需要在数千个其他文件中找到包含名称的文件?也许可以根据文件名重命名30k个文件。太棒了,正是我需要的,谢谢Simon。太棒了,正是我需要的,谢谢Simon。谢谢Sudhanshu,非常感谢你的时间。谢谢Sudhanshu,非常感谢你的时间。谢谢你。