【问题标题】: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的这个问题
  • 不确定你是否想要它,但我提供了一个你可以使用的功能模板,即使你打算深入到一个文件夹之外(即,如果图像可以位于子目录中的原始路径)。

标签: java function


【解决方案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 对象。你已经迈出了第一步——你正在将大问题分解成更小的部分。现在,分别处理每一个。如果遇到问题,请向 StackOverflow 提出关于它们的单独的具体问题。获得路径后,您可以使用 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);
            }
        }
    
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 2018-06-08
      相关资源
      最近更新 更多