将给出文件夹中所有项目名称的函数[重复]

Posted

技术标签:

【中文标题】将给出文件夹中所有项目名称的函数[重复]【英文标题】:Function which will give the names of all items in a folder [duplicate] 【发布时间】:2013-05-06 19:23:12 【问题描述】:

这是我必须做的,但我不知道从哪里开始:

编写一个程序,让您从 指定的目录。图片随后显示在窗口中,如 如下:

a) 目录和图像之间的时间间隔(以秒为单位)是在程序启动时根据 文件中的信息, b) 图片以其原始尺寸显示, c) 将图像调整为框架

我知道非常基本的问题,但刚刚开始使用 Java。 是否有某种功能可以为我提供文件夹中所有项目的名称?

【问题讨论】:

看看listing的这个问题和filtering的这个问题 不确定你是否想要它,但我提供了一个你可以使用的功能模板,即使你打算深入到一个文件夹之外(即,如果图像可以位于子目录中的原始路径)。 【参考方案1】:

如果您想为目录中的所有文件创建文件对象,请使用:

new File("path/to/directory").listFiles();

如果您只想使用名称

new File("path/to/directory").list();

【讨论】:

也使用 FileFilter 过滤未使用的内容。 Java 7 也为此类任务引入了更多功能【参考方案2】:

如果你只想要图片文件,你可以使用File.listFiles( FileFilter filter ):

 File[] files = new File( myPath ).listFiles( 
    new FileFilter() 
       boolean accept(File pathname) 
          String path = pathname.getPath();
          return ( path.endsWith(".gif") 
              || path.endsWith(".jpg")
              || ... );
       
    );

【讨论】:

我还有一个问题。我必须将文件的路径指定为“C:\temp\images”,整个将在另一个.txt 文件中收费。我将通过扫描仪读取它并添加,但是 File[] 不会接受这种形式的路径。 反斜杠是 Java 字符串中的特殊字符。您可以使用双反斜杠对其进行转义。例如:“C:\\temp\\images。” (不确定是否能回答您的问题;如果没有,请告诉我。) 不是真的,我的意思是我得到了带有图片文件夹路径的 .txt 文件。程序需要通过扫描仪以“C:\temp\images”的形式读取一条路径。我遇到的问题是如何提供程序的路径,因为我看不到这条路径。我得到的只是第一个 txt 文件的路径。其余的必须通过程序来完成。我希望你明白我的意思:( 好的。您需要能够读取文件,然后使用该文件中包含的路径来创建 File 对象。你已经迈出了第一步——你正在将大问题分解成更小的部分。现在,分别处理每一个。如果遇到问题,请向 *** 提出关于它们的单独的具体问题。获得路径后,您可以使用 new File( myPath ) 创建一个新的 File 对象。【参考方案3】:

我假设您想要获取一个目录及其所有子目录中的所有图像。给你:

    //Load all the files from a folder.
    File folder = new File(folderPathString);
    readDirectory(folder);


public static void readDirectory(File dir) throws IOException
        

    File[] folder = dir.listFiles();//lists all the files in a particular folder, includes directories

    for (int i = 0; i < folder.length; i++) 
    
        File file = folder[i];

        if (file.isFile() && (file.getName().endsWith(".gif") || file.getName().endsWith(".jpg"))
        
                read(file);
        

        else if (file.isDirectory())
        
                readDirectory(file);
        

    


public static void read(File input) throws IOException

        //Do whatever you need to do with the file  

【讨论】:

【参考方案4】:

如果你可以使用JDK 7,那么推荐的方式(如果我可以说的话)是:

public static void main(String[] args) throws IOException 


    Path dir = Paths.get("c:/some_dir");
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.gif,png,jpg")) 
        for (Path entry: stream) 
            System.out.println(entry);
        
    


它更高效,因为您获得了不一定包含所有条目的迭代器。

【讨论】:

以上是关于将给出文件夹中所有项目名称的函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

wget:: 如何将所有已下载的文件重命名为 wget --content-disposition 给出的名称?

更改 xib 名称 [重复]

使用Qt的dumpcpp时重复的函数名称

有啥方法可以测试并给出真/假语句以查看文件是不是存在,Python [重复]

剃刀视图没有给出编译时错误[重复]

使用 Qt 的 dumpcpp 时重复的函数名称