我目前正在开发一个学校项目,它基于Java,我在Linux Mint上使用Eclipse来编写它。赋值说使用语句String[] filenames = new java.io.File("icons).list();
来创建文件名数组。
问题是我不知道该怎么做,我花了几个小时搜索互联网和我的教科书,但无济于事。它需要一个单独的方法吗?
以下是我对模型中所需代码的猜测(该项目是使用GUI制作匹配游戏),名称必须稍后转换为实际图标,但我很确定我有这个部分想通了,我似乎无法将darn文件放入数组!!
提前致谢,
public String[] list() {
String[] fileNames = new java.io.File("icons").list();
return fileNames;
}
答案 0 :(得分:1)
在Java中,File
类不必表示文件系统上的“现有”文件。例如:
File f = new File("some_unknown_unexisting_file.bob");
System.out.println(f.exists()); // most likely will print 'false'
此外,该类还解析当前工作目录中的文件。您可以使用
获取此目录System.out.println(new File(".").getAbsolutePath());
在您的情况下,如果可以的话,我建议您使用以下代码获取File[]
数组:
File[] files = new File("icons").listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return !f.isDirectory() && f.canRead();
}
});
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
将返回一个File
个对象的数组,这些对象不是文件夹,你可以打开阅读(请注意,这并非总是如此,但在你的情况下也没问题。)
但如果您 使用list()
,那么这是等效的:
File parent = new File("icons");
String[] fileStr = parent.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File f = new File(dir, name);
return !f.isDirectory() && f.canRead();
}
});
for (String f : fileStr) {
System.out.println(new File(parent, f).getAbsolutePath());
}
此外,使用您的文件列表(String[]
),您可以使用以下方式创建图标:
String filename = fileStr[i]; // some file name within the array
ImageIcon icon = new ImageIcon("icons" + File.separator + filename);
或您的文件列表(File[]
),它更清晰:
File file = files[i]; // some file within the File[] array
ImageIcon icon = new ImageIcon(file.getAbsolutePath());
祝你好运。
答案 1 :(得分:0)
你写的代码看起来没问题。你确定Java正在寻找文件夹“icons”吗?
试试这个:
File f = new File("icons");
System.out.println("Does icons exist?" + f.exists());
System.out.println("Is it a dir?" + f.isDirectory());
System.out.println("How many files does it contain?" + f.list().length);
祝你好运!
答案 2 :(得分:0)
我遇到了同样的问题。当我尝试将图标文件夹移动到src文件夹之前的文件夹中时,它似乎有效。我不确定在提交作业时我会做什么,因为它在JCreator中工作,我相信它必须与.java文件一起使用。