Edit1: Обновлен мой метод. Я думаю, что это помогло ... Я не смогу быть уверенным, пока не смогу проверить это позже.
Edit2: Возврат к предыдущей версии, чтобы показать изменение от оригинала к ответу.
Это часть большей проблемы, с которой я пытаюсь распространить свою программу на другие компьютеры. У меня есть метод, который читает файл (в частности, XML-файл, но я думаю, что это не имеет значения) в String
. Это приложение с графическим интерфейсом, поэтому пользователь выбирает файл, и этот файл читается этим методом. Я также использую этот метод для чтения ресурсов, поэтому у меня есть catch
для FileNotFoundException
. Если он обнаружен, он пытается прочитать его как ресурс. Если это не сработает, то, наверное, слишком плохо ... Ха-ха.
Итак, я пытаюсь это сделать 4 разными способами:
- Рабочий компьютер (компьютер разработки) в NetBeans (моя IDE): работает
- Рабочий компьютер из банки (скомпилирован NetBeans): работает
- Персональный компьютер в NetBeans (я использую Dropbox, поэтому файлы синхронизируются довольно хорошо, и все мои ссылки верны): работает
- Персональный компьютер из банки (скомпилирован NetBeans): НЕ РАБОТАЕТ
Насколько я могу судить, то, что происходит в этом последнем случае, по какой-то причине fileScanner.hasNext()
возвращает false при первом проходе цикла, поэтому к fileString ничего не добавляется. Я просто не знаю, что привело бы к такому поведению! Любая помощь будет оценена! (Обратите внимание, что ошибки не выдается, все "отлично" работает на компьютере).
Вот мои методы. Буду признателен за любую помощь, улучшающую его!
/**
* This method reads a file into a string. If you have an file in the resources folder for example, you can say
* "/resources/exampleFile.txt".
*
* @param location location of the resource in the resources folder
* @return String of the file
*/
public static String fileToString(String location) throws FileNotFoundException {
Scanner fileScanner;
try {
InputStream is = StaticClass.class.getResourceAsStream(location);
fileScanner = new Scanner(is);
} catch (NullPointerException e) {
fileScanner = new Scanner(new File(location));
}
StringBuilder fileString = new StringBuilder();
while (fileScanner.hasNext()) {
fileString.append(fileScanner.nextLine()).append(newline);
}
return fileString.toString();
}