这是我必须做的,但我不知道从哪里开始:
编写一个程序,允许您从中浏览图像(gif,jpg) 指定目录。随后在窗口中显示图片,如 如下:
- a)目录和图像之间的时间间隔(以秒为单位)是在程序开始时确定的 来自文件的信息,
- b)图片以原始尺寸显示
- c)将图像调整为框架
我知道这个非常基本的问题,但只是开始使用Java。 是否有某种功能,它会为我提供文件夹中所有项目的名称?
答案 0 :(得分:6)
如果要为目录中的所有文件设置文件对象,请使用:
new File("path/to/directory").listFiles();
如果您只想使用名称
new File("path/to/directory").list();
答案 1 :(得分: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")
|| ... );
}
});
答案 2 :(得分: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
}
答案 3 :(得分: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);
}
}
}
它更高效,因为你得到的迭代器不一定能容纳所有条目。