gpt4 book ai didi

java - 将 File 对象添加到数组

转载 作者:行者123 更新时间:2023-12-02 04:59:54 25 4
gpt4 key购买 nike

我似乎遇到了代码语法不正确的问题,但由于我刚刚开始学习,我似乎错过了错误。这是一项家庭作业,我需要使用 JxploreFile 对象数组。这是我遇到问题的代码部分:

private JxploreFile[] getSubFolders()
{
File subFiles[];
subFiles = file.listFiles();

File subFolders[];
int p = 0;
for(int i = 0; i < subFiles.length; i++)
{
if(subFiles[i].isDirectory() == true)
{
Array.set(subFolders, p, subFiles[i]);
}
}

JxploreFile foldersToReturn[] = new JxploreFile[subFolders.length];
for(int i=0; i < subFolders.length; i++)
{
foldersToReturn[i] = new JxploreFile(subFolders[i]);
}
return foldersToReturn;
}

具体来说,我尝试将标记为 .isDirectory 的文件添加到新数组中的 for 循环。我还尝试了其他方法,通过声明索引号将来自 subFiles 数组的每个新文件手动放入 subFolders 数组中,但这也被证明是错误的。此时我已经没有想法了,我希望有人能指出我明显的问题,因为我可能错过了一些非常基本的东西。

编辑:我对不完整的帖子感到抱歉,这是我第一次在这里发帖,因为我通常会尝试从其他人的帖子中过滤掉自己的问题。我得到的错误确实是“subFolders”尚未初始化,我不明白,因为我在第六行写了 文件子文件夹[];据我所知应该声明变量 subFolders 成为一个数组,或者这是我出错的地方?另外,我的问题可能不够具体,我正在寻找导致错误的原因(我根本没有提到):为什么“subFiles”没有初始化。

最佳答案

数组subFolders尚未正确初始化。为了在 Array.set 方法中使用数组,必须对其进行初始化并分配大小。

另一种方法是使用List。当您处理更具动态性的数据时,列表是很好的选择。当你不知道数组的大小时。然后你可以像这样简化你的代码:

File[] subFiles = file.listFiles();

// Create the list
List<JxploreFile> subFolders = new ArrayList<>();

// Add all the sub folders (note that "file" is a bit magic since it
// is not specified anywhere in the original post
for (File subFile : file.listFiles()) {
if (subFile.isDirectory()) {
subFolders.add(new JxploreFile(subFile));
}
}

// Return an array
return subFolders.toArray(new JxploreFile[subFolders.size()]);

您还可以使用 Java 8 流进一步简化整个过程,如下所示:

return Arrays.stream(file.listFiles())
.filter(File::isDirectory)
.toArray(JxploreFile[]::new);

了解更多信息:

关于java - 将 File 对象添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28384442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com