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