6

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

编写一个程序,允许您浏览指定目录中的图像(gif、jpg)。随后在窗口中显示图片,如下所示:

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

我知道非常基本的问题,但刚刚开始使用 Java。是否有某种功能,它会给我一个文件夹中所有项目的名称?

4

4 回答 4

7

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

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

如果您只想使用名称

new File("path/to/directory").list();
于 2013-05-12T18:12:16.960 回答
3

如果您只想要图像文件,您可以使用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")
              || ... );
       }
    });
于 2013-05-12T18:14:14.877 回答
1

如果您可以使用 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);
        }
    }

}

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

于 2013-05-12T18:44:26.287 回答
1

我假设您想要获取目录及其所有子目录中的所有图像。干得好:

    //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  
}
于 2013-05-12T18:19:28.717 回答