Java 如何创建包含文件目录的字符串数组?

Java 如何创建包含文件目录的字符串数组?,java,arrays,file,Java,Arrays,File,我目前正在为学校做一个项目,它是基于Java的,我正在使用LinuxMint上的Eclipse来编写它。赋值说明使用语句String[]filenames=newjava.io.File(“icons.list();创建一个文件名数组 问题是我不知道该怎么办,我花了几个小时在网上和我的课本上搜索,但都没有结果。这需要单独的方法吗 下面是我对模型中所需代码的猜测(该项目是制作一个匹配的游戏,带有GUI)名称稍后将必须转换为实际图标,但我非常确定我已经找到了这一部分,我似乎无法将该死的文件放入数组中

我目前正在为学校做一个项目,它是基于Java的,我正在使用LinuxMint上的Eclipse来编写它。赋值说明使用语句
String[]filenames=newjava.io.File(“icons.list();
创建一个文件名数组

问题是我不知道该怎么办,我花了几个小时在网上和我的课本上搜索,但都没有结果。这需要单独的方法吗

下面是我对模型中所需代码的猜测(该项目是制作一个匹配的游戏,带有GUI)名称稍后将必须转换为实际图标,但我非常确定我已经找到了这一部分,我似乎无法将该死的文件放入数组中

提前感谢,

public String[] list() {
    String[] fileNames = new java.io.File("icons").list();
    return fileNames;
}

您编写的代码看起来不错。您确定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);

祝你好运!

你编写的代码看起来不错。你确定Java正在查看的地方存在“图标”文件夹吗

试试这个:

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

祝您好运!

在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[] 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());
}
它将返回一个非文件夹的
文件
对象数组,您可以打开这些对象进行阅读(请注意,这并不总是正确的,但在您的情况下可以)

但如果必须使用
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 = files[i];   // some file within the File[] array
ImageIcon icon = new ImageIcon(file.getAbsolutePath());

祝您好运。

在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[] 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());
}
它将返回一个非文件夹的
文件
对象数组,您可以打开这些对象进行阅读(请注意,这并不总是正确的,但在您的情况下可以)

但如果必须使用
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 = files[i];   // some file within the File[] array
ImageIcon icon = new ImageIcon(file.getAbsolutePath());

祝你好运。

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

我遇到了同样的问题。当我尝试将icons文件夹移动到int时o就在src文件夹之前的文件夹,它似乎可以工作。我不确定提交作业时我将做什么,至于在JCreator中工作,我相信它必须与.java文件一起工作。

尝试将目录路径放在图标所在的引号内。我不确定您的问题是什么。您发布的代码返回所有文件的名称在“icons”目录中作为一个数组。问题“我如何读取每个文件的内容?”更详细一点,现在我有两个类,模型和实际的UI。我的最终目标是将文件夹中的图标放入一个文件名数组(位于模型中),然后分配给一个JButton数组(位于GUI中)(我必须制作一个磁贴内存匹配游戏)基本上我需要模型部分来读取文件夹“图标”,将其放入数组中,然后将其放入表示按钮网格的2D数组中,最后将文件分配给JButtons。尝试将目录路径放在图标所在的引号内。我不确定您的问题是什么。您发布的代码将“icons”目录中所有文件的名称作为数组返回。问题是,“如何读取每个文件的内容?”再详细一点,现在我有两个类,模型和实际的UI。我的最终目标是将文件夹中的图标放入一个文件名数组(位于模型中),然后分配给一个JButton数组(位于GUI中)(我必须制作一个瓷砖记忆匹配游戏)基本上我需要模型部分来读取文件夹“图标”",将其放入数组中,然后将其放入代表按钮网格的2D数组中,最后将文件分配给JButtons。这无疑有助于我理解文件是什么,基本上它是对包含路径的字符串的引用?然后我假设要实际获取按钮上的图标,我只需制作一个新的ImageIcon。然而,我仍然是sti我不太清楚如何读取文件名,getAbsolutePath给了我目录“/home/daniel/workspace/Assignment3/”但是我在Linux上运行这个,TA很可能会使用运行JCreator的windows。
FilenameFilter
,也请参见+1。如果您使用的是Eclipse,那么默认路径是Eclipse的项目路径,因此无论使用的是什么操作系统,它都不会造成任何问题,因为这是一种默认的独立于平台的行为。
文件
对象不仅是对路径名的引用,而且像一个获取路径信息的实用程序。创建新的
文件
不会创建或打开任何内容,而是提供一组“操作”您可以使用给定的路径名执行。
JButton
有一个构造函数,它可以获取一个
图标
,因此,是的,您可以创建一个新的
图像图标
,并将其提供给
JButton
构造函数。这无疑有助于我理解文件是什么,基本上它是对包含路径的字符串的引用嗯,我假设要在按钮上得到图标,我只需要