首页 文章

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

提问于
浏览
1

我目前正在研究一个学校项目,它基于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

    在Java中, File 类不必表示文件系统上的"existing"文件 . 例如:

    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());
    

    祝好运 .

  • 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);
    

    祝好运!

  • 1

    我遇到了同样的问题 . 当我尝试将图标文件夹移动到src文件夹之前的文件夹时,它似乎工作 . 我不确定在提交作业时我会做什么,因为它在JCreator中工作,我相信它必须与.java文件一起使用 .

相关问题