为了账号安全,请及时绑定邮箱和手机立即绑定

迭代没有写在正确的数组索引上

迭代没有写在正确的数组索引上

犯罪嫌疑人X 2023-03-09 10:54:44
我找到了一个遍历文件夹并返回文件名的代码。我创建了一个包含 8000 个位置的 String[] 数组,因为我有大约 7500 个文件并且还在增加。如果我使用我在 system.out.println 中找到的代码,它会返回每个文件名,但如果我使用我的代码将位置写入数组索引,我只会得到 1 个位置,其余为空。不幸的是我无法找出问题所在。import java.io.*;public class Tester {    public static void main(String[] args) {        File folder = new File("mypath\\myfilefolder");        File[] listOfFiles = folder.listFiles();        String[] fileNames = new String[8000];        for (int i = 0; i < listOfFiles.length; i++) {            int c = 0;          if (listOfFiles[i].isFile()) {              fileNames[c++] = listOfFiles[i].getName();              // Seems not to be doing anything like supposed    //      System.out.println(listOfFiles[i].getName());    //      Prints every filename on a new line                 } else if (listOfFiles[i].isDirectory()) {            System.out.println("Directory " + listOfFiles[i].getName());          }        }        for (String element: fileNames) {            System.out.println(element);        }    }}我希望能够遍历文件名并获取文件名,以便我可以使用它。但实际上只有第一个位置发生了变化,其他所有位置仍然为空。
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

永远不会使用在“c++”处更改的值。每次你的代码执行到 c++ 之前,c 的变量被重置为 0。



查看完整回答
反对 回复 2023-03-09
?
慕容3067478

TA贡献1773条经验 获得超3个赞

这与使用流 API(Java 1.8 及更高版本)的算法相同:

String[] fileNames = Arrays.stream(folder.listFiles()) // stream all the files in the directory
    .filter(file -> !file.isDirectory()) // filter any directory files in there
    .map(File::getName) // map an item to its name
    .toArray(String[]::new); // collect as a String array


查看完整回答
反对 回复 2023-03-09
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信