Ошибка обработки / количества файлов в Java с путем к файлу (тип переменной) - PullRequest
0 голосов
/ 29 ноября 2018

Хотя название не очень понятно, у меня есть простая проблема.Поэтому я пытаюсь записать некоторый код в эскиз обработки (https://processing.org/)), который может подсчитать, сколько файлов содержится в документе. Проблема в том, что он не принимает тип переменной.

File folder = File("My File Path");
folder.listFiles().size;

Он говорит, что функция File (String) не существует. Когда я пытаюсь указать путь к файлу без кавычек, он все равно не работает!

Если у вас есть решение, пожалуйста,используйте пример работы, чтобы я знал, как он работает. Спасибо за любую помощь!

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Как говорит Йоаким Даниэльсон, это конструктор, поэтому вам нужно использовать ключевое слово new.Ниже код будет работать для вас.

File folder = new File("My File Path");
int fileLength = folder.listFiles().length;
0 голосов
/ 29 ноября 2018

Предполагая, что папка «My File Path» находится внутри вашего эскиза, вам необходимо указать путь к вашему эскизу.К счастью, Обработка уже предоставляет вспомогательную функцию: sketchPath()

Вот пример:

File folder = new File(sketchPath("My File Path"));
println("folder.exists: " + folder.exists());
if(folder.exists()){
  println(folder.listFiles().length + " files and/or directories");
}else{
  println("folder does not exist, double check the path");
}

Имейте в виду, есть также dataPath() функция, которая указывает на папку с именем data в папке эскиза.Папка data обычно используется для хранения внешних данных (например, ресурсов (растровые или векторные изображения / файлы шрифтов обработки) или необработанных данных (двоичные / текстовые / csv / xml / json / и т. Д.)).Это полезно, чтобы отделить исходные файлы эскиза от данных, которые будут загружены / доступны для вашего эскиза.

Кроме того, в Processing есть несколько служебных функций для вывода списка файлов и папок.Обязательно ознакомьтесь с Обработка> Примеры> Темы> Файловый ввод-вывод> DirectoryList

Пример включает в себя менее документированные функции, такие как listFiles() (который возвращает массивjava.io.File объекты на основе набора фильтров) или listPaths (который возвращает массив объектов String: только пути).

Опции и фильтры довольно удобны,например, если вы хотите перечислить только каталоги и игнорировать файлы, вы можете просто написать просто так:

println("directories: " + listFiles(sketchPath("My File Path"),"directories").length);

Например, если вы хотите перечислить все файлы wav в каталоге data/audio внутри эскиза, который вы можете использовать:

File[] files = listFiles(dataPath("audio"), "files", "extension=wav");

При этом будут игнорироваться каталоги и любые другие файлы, не имеющие расширения .wav.

Чтобы завершить этот ответ, ниже приведено несколько подробностей о параметрах * 1039.* / listPaths из Исходный код обработки :

  • "relative" -> no effect with the Files version, but important for listPaths
  • "recursive"-> traverse nested directories
  • "extension=js" or "extensions=js|csv|txt" (no dot)
  • "directories" -> only directories
  • "files" -> only files
  • "hidden" -> include hidden files (prefixed with .) disabled by default
0 голосов
/ 29 ноября 2018

Это конструктор, поэтому вам нужно использовать new

File folder = new File("My File Path");
//To get the number of files in the folder
folder.listFiles().length;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...