将给出文件夹中所有项目名称的函数[重复]
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 给出的名称?