使用java uri.create在hdfs中写入带有空格的文件名,导致其失败并出现illegalargumentexception

x0fgdtte  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(1144)

我正在尝试执行以下代码段以将文件保存在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)

我想保留文件名中的空格。

inb24sb2

inb24sb21#

索引处有非法字符 26 ,即它不喜欢路径中的空间。您可以对特殊字符(如空格)进行百分比编码。替换为 %20 在这种情况下。

String targetFileStr = "/someDirectory/fileWith Space.txt"
targetFileStr = targetFileStr.replaceAll(" ","%20");

您还可以使用urlencoder:

String targetFileStr = "/someDirectory/fileWith Space.txt"
targetFileStr = URLEncoder.encode(targetFileStr, "UTF-8");

相关问题