如何制作包含文件目录的String数组?

时间:2012-03-05 00:08:34

标签: java arrays file

我目前正在开发一个学校项目,它基于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;
}

3 个答案:

答案 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文件一起使用。