您好我有一个jlist,目前正在查看文件夹+子文件夹...现在我想更改此内容以查看子文件夹中的文件。请在下面找到我目前使用的代码:
jList1.setModel(new javax.swing.AbstractListModel()
{
File folder = new File ("/Assignment_Datex/message_outbox/");
File[] listofFiles = folder.listFiles();
// @Override
public int getSize()
{ return listofFiles.length; }
// @Override
public Object getElementAt(int i)
{ return listofFiles[i];}
}
);
现在,正如您在屏幕截图中看到的那样,Jlist只查看文件夹而不是文件中的文件...请帮忙吗?
答案 0 :(得分:3)
如果你想在一些根文件夹下显示所有文件和文件夹,那么你应该试试这样的...
我不能在这里生成完整的代码,但这是原型:
void addFilesToList(File folder){
File[] listofFiles = folder.listFiles();
for(File file:listofFile){
if(file.isFile()) // --- file
list.add(file.getName());
else{ // --- folder
addFileToList(file);
}
}
}
以上代码未经过测试,因此可能需要对其进行修改以满足您的需求。
答案 1 :(得分:1)
@Harry Joy是对的。 此外,您还可以使用jakarta项目中的FindFile。它可以节省您的时间。
答案 2 :(得分:0)
您创建了一个构造函数来初始化您的类,并在那里放置(测试并正常工作)
// initialize the class variable
listofFiles = new ArrayList();
// initialize with the path
File f = new File("/home/albertmatyi/Work/python/");
// create a temporary list to work with
LinkedList files = new LinkedList();
// fill it with the contents of your path
files.addAll(Arrays.asList(f.listFiles()));
while (!files.isEmpty()) {
// keep removing elements from the list
f = files.pop();
// if it is a directory add its contents to the files list
if (f.isDirectory()) {
files.addAll(Arrays.asList(f.listFiles()));
// and skip the last if
continue;
}
// check if it's a text file, and add it to listofFiles
if (f.getName().endsWith(".txt"))
listofFiles.add(f);
}
<小时/> 编辑:
注意强>:
我已将listofFiles的类型更改为ArrayList<File>
,必须使用以下命令在构造函数中初始化:
listofFiles = new ArrayList<File>();
这样可以更轻松地处理数据 - 无需手动分配更大的空间,以便在需要添加更多文本文件时
答案 3 :(得分:0)
我认为这是阅读文件夹和子文件夹中所有.txt文件的好方法
private static void addfiles (File input,ArrayList<File> files)
{
if(input.isDirectory())
{
ArrayList <File> path = new ArrayList<File>(Arrays.asList(input.listFiles()));
for(int i=0 ; i<path.size();++i)
{
if(path.get(i).isDirectory())
{
addfiles(path.get(i),files);
}
if(path.get(i).isFile())
{
String name=(path.get(i)).getName();
if(name.lastIndexOf('.')>0)
{
int lastIndex = name.lastIndexOf('.');
String str = name.substring(lastIndex);
if(str.equals(".txt"))
{
files.add(path.get(i));
}
}
}
}
}
if(input.isFile())
{
String name=(input.getName());
if(name.lastIndexOf('.')>0)
{
int lastIndex = name.lastIndexOf('.');
String str = name.substring(lastIndex);
if(str.equals(".txt"))
{
files.add(input);
}
}
}
}
现在您有一个文件列表,您可以对其进行一些处理!