Файл чтения Java с пробелами в пути
Я пытаюсь открыть файлы с FileInputStream, которые имеют пробелы в их именах.
например:
String fileName = "This is my file.txt";
String path = "/home/myUsername/folder/";
String filePath = path + filename;
f = new BufferedInputStream(new FileInputStream(filePath));
в результате создается исключение FileNotFoundException.
Я попытался жестко закодировать путь к файлу "/home/myUserName/folder/This is my file.txt"
просто посмотреть, должен ли я избегать пробелов, и это, похоже, не сработало.
Есть предложения по этому вопросу?
EDIT: просто быть на одной странице со всеми, кто просматривает этот вопрос...открытие файла без пробелов в его имени работает тот, у которого есть пробелы, терпит неудачу. Разрешения здесь не проблема, ни разделитель папок.
4 ответов
имя файла с пробелом работает просто отлично
вот мой код
File f = new File("/Windows/F/Programming/Projects/NetBeans/TestApplications/database prop.properties");
System.out.println(f.exists());
try
{
FileInputStream stream = new FileInputStream(f);
}
catch (FileNotFoundException ex)
{
System.out.println(ex.getMessage());
}
f.exists()
возвращает true
всегда без каких либо проблем
похоже, у вас проблема скорее с разделителем файлов, чем с пробелами в именах файлов. Вы пробовали использовать
System.getProperty("file.separator")
вместо вашего ' / ' в переменной path?
нет, вам не нужно избегать пробелов.
Если код выдает FileNotFoundException
, то файл не существует (или, возможно, у вас нет необходимых разрешений для доступа к нему).
Если разрешения в порядке, и вы думаете, что файл существует, убедитесь, что он называется так, как вы думаете, что он называется. В частности, убедитесь, что имя файла не содержит непечатаемые символы, случайного начальные и конечные пробельные символы и т. д. За это,ls -b
может быть полезный.
обычно пробелы в пути не должны иметь значения. Просто убедитесь, что при передаче пути из внешнего источника (например, из командной строки) он не содержит пробелов в конце:
File file = new File(path.trim());
Если вы хотите иметь путь без пробелов, вы можете преобразовать его в URI, а затем обратно в path
try {
URI u = new URI(path.trim().replaceAll("\u0020", "%20"));
File file = new File(u.getPath());
} catch (URISyntaxException ex) {
Exceptions.printStackTrace(ex);
}