Как исправить ошибку «не удается найти символ» в Java? - PullRequest
0 голосов
/ 16 июня 2019

Я написал фрагмент кода, который добавляет содержимое всех CSV-файлов в список.Компиляция этой программы генерирует ошибку «not find symbol» в строке '' 'Iterator iter = full_files.iterator ();' ''

Я проверил свои объявления, и все вроде бы нормально.Я объявил и инициализировал full_files в предыдущей строке.

public ArrayList<String[]> readCSV(File FDir) throws IOException {
        File[] files = FDir.listFiles();
        File F = files[0];
        ArrayList<String[]> all_list = new ArrayList<>();
        ArrayList<String[]> list = new ArrayList<>();

        // Creating a file to point to the "Full" directory
        File FullDir = new File(F.getParent() + "/Full/");
        File[] full_files = FullDir.listFiles();

        Iterator<File> iter = full_files.iterator();

        // Iterating through the files in "Full"
        while(iter.hasNext()) {
                File file = iter.next();
                if(GetFileExtension.get(file).equals(".csv")) {
                        list = CSVHandler.readCSV(file);
                        all_list.addAll(list);
                }
        }

        // Checking if the file outside "Full" is a CSV
        if(GetFileExtension.get(F).equals(".csv")) {
                list = CSVHandler.readCSV(F);
                all_list.addAll(list);
        }

        return all_list;

}

Это ошибка, которую я получаю во время компиляции.

shared/utilities/main.java:82: error: cannot find symbol

    Iterator<File> iter = full_files.iterator();

                              ^
symbol:   method iterator()

location: variable fast of type File[]

1 error

1 Ответ

0 голосов
/ 16 июня 2019

Прежде всего, вам даже не нужен итератор, благодаря for(File file : full_files) с Java 7.

Это рабочая версия:

public List<String[]> readCSV(File dir) throws IOException {
  File[] files = dir.listFiles();
  List<String[]> allMatchingFiles = new ArrayList<>();

  if (files == null || files.length < 1) {
    return allMatchingFiles;
  }

  File firstFile = files[0];

  // Creating a file to point to the "Full" directory
  File fullDir = new File(firstFile.getParent() + "/Full/");
  File[] fullDirFiles = fullDir.listFiles();

  // Iterating through the files in "Full"
  if (fullDirFiles != null) {
    for (File file : fullDirFiles) {
      if (GetFileExtension.get(file).equals(".csv")) {
        allMatchingFiles.addAll(CSVHandler.readCSV(file));
      }
    }
  }

  // Checking if the file outside "Full" is a CSV
  if (GetFileExtension.get(firstFile).equals(".csv")) {
    allMatchingFiles.addAll(CSVHandler.readCSV(firstFile));
  }

  return allMatchingFiles;

}

Как вы могли заметить, я написал это немного более осторожно, например, проверив наличие нуля. Также я использовал List <> вместо ArrayList <>.

Кроме того, в Java для имен переменных обычно используется lowerCamelCase.

@ Joakim Danielson: Хорошо, изменил код соответствующим образом:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...