#java #hadoop #hdfs #illegalargumentexception
#java #hadoop #hdfs #illegalargumentexception
Вопрос:
Я пытаюсь выполнить следующий фрагмент, чтобы сохранить файл в HDFS.
Configuration conf = new Configuration();
String targetFileStr = "/someDirectory/fileWith Space.txt"
FileSystem fs = FileSystem.get(URI.create(targetFileStr), conf);
Path path = new Path(targetFileStr);
Но это сбой с:
java.lang.IllegalArgumentException: Illegal character in path at index 26
at java.net.URI.create(URI.java:852)
Я хочу сохранить пробел в filename .
Комментарии:
1. Можете ли вы попробовать закодировать имя файла?
2. @NileshPS Я попытался закодировать его с помощью java.net . URLEncoder и пробел заменяются знаком . Но меня беспокоит то, что при сохранении файла в HDFS он сохранится с или с пробелом.
Ответ №1:
В индексе есть недопустимый символ 26
, то есть ему не нравится пробел в пути. Вы можете в процентах кодировать специальные символы, такие как пробелы.
В этом случае замените его на a .
String targetFileStr = "/someDirectory/fileWith Space.txt"
targetFileStr = targetFileStr.replaceAll(" "," ");
Вы также можете использовать URLEncoder:
String targetFileStr = "/someDirectory/fileWith Space.txt"
targetFileStr = URLEncoder.encode(targetFileStr, "UTF-8");