2

对不起,我修改了我的整个问题。

我想将一些特定文件(基于fileExtension)从一个目录移动到另一个目录。

为此,我计划编写 2 个函数名称是ListOfFileNamesMovingFiles

如果您将directorypathfiletype作为参数传递给ListOfFileNames(),它将返回List<File>数据。此列表具有完整的文件路径。

MovingFiles()将文件从源目录移动到目标。

我尝试MovingFiles了以下方式的功能。它不起作用。

public void MovingFiles(String SourcePath,String directoryPath,String fileType) throws IOException
{
    ExternalFileExecutions ExternalFileExecutionsObject=new ExternalFileExecutions();
    List<File> fileNames=ExternalFileExecutionsObject.ListOfFileNames(SourcePath, fileType);
    for (int fileIndex = 0; fileIndex < fileNames.size(); fileIndex++) 
    {
        fileNames[fileIndex].renameTo(new File(directoryPath+"/" + fileNames[fileIndex].getName()))
    }
}

我想,我需要转换List<File>为。List<String>这就是为什么以前我这样问的原因。

@tbodt 回答了我的问题。我未能将他的答案整合到我的功能中。所以我修改了我的问题。

再次抱歉,修改了我的整个问题。

谢谢。

4

5 回答 5

4

如果您想为List<String>每个元素获取相应文件的规范路径,方法如下:

List<String> list = new ArrayList<String>();
for (File file : finalListNames)
    list.add(file.getCanonicalPath());

如果这不是你想要的,请澄清。

于 2013-07-23T19:29:33.907 回答
1

如果理解你,使用guava,我会这样写:

    public static List<File> listOfFiles(){
        return Lists.newArrayList(new File("source.txt"), new File("test.txt"));
    }

    public static List<String> listOfFileNames(){
        return Lists.transform(listOfFiles(), new Function<File, String>() {
            public String apply(File input) {
                return input.getAbsolutePath();
            }
        });
    }
于 2013-07-25T10:55:11.720 回答
0

您将文件从一个目录移动到另一个具有相同文件名的目录

  try{
       File afile =new File("C:\\folder1\\file1.txt");
       if(afile.renameTo(new File("C:\\folder2\\" + afile.getName()))){
        System.out.println("File is moved successful!");
       }else{
        System.out.println("File is failed to move!");
       }

    }catch(Exception e){
        e.printStackTrace();
    }
于 2013-11-28T18:00:05.790 回答
0

你不能转换它。但是您可以在遍历文件列表时检索名称(无论它是什么)。一个非常方便的解决方案是 LINQ,然后选择

于 2013-07-25T11:03:25.023 回答
0

这是我的回答。我在我的代码中使用了@tbodt 代码。

public void MovingFiles(String SourcePath,String directoryPath,String fileType) throws IOException
{
    ExternalFileExecutions ExternalFileExecutionsObject=new ExternalFileExecutions();
    List<File> fileNames=ExternalFileExecutionsObject.ListOfFileNames(SourcePath, fileType);
    List<String> list = new ArrayList<String>();
    for (File file : fileNames)
    list.add(file.getCanonicalPath());
    for (int fileIndex = 0; fileIndex < list.size(); fileIndex++)
    {
        File file=new File(list.get(fileIndex));
        file.renameTo(new File(directoryPath+"/",file.getName()));
    }
}
于 2013-07-25T11:25:20.217 回答