读取名称中包含空格和西里尔符号的资源文件
Read resource file with spaces and cyrillic symbols in name
我有一组文件作为资源附加到我的项目中。这些文件包含程序读取和处理的数据。
我就是这样做的:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(filename);
packageParameters = IOUtils.toString(inputStream, "UTF-8");
inputStream.close();
一切都很好,直到我尝试读取具有特定名称的文件,例如:
\sets\Тех. тип = 0 Сет. = 1 Комплект 1.qr
getResourceAsStream
returns null
表示找不到这个资源
所以,问题是:如何读取名称中包含西里尔字符、空格和特殊符号的文件?
试图对名称进行编码 - 无济于事。无法将其转换为 URI,因为构造函数会抛出非法符号异常。
任何想法表示赞赏。
花了几天时间分析类似的答案 - 仍然不知道如何解决它。
尝试删除尾部斜杠并将 \
替换为 /
。
我将文件 Тех. тип = 0 Сет. = 1 Комплект 1.qr
放在 src\main\resources\sets
中,内容为
123
这对我有用
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
public class Application {
public static void main(String[] args) throws IOException {
String filename = "sets/Тех. тип = 0 Сет. = 1 Комплект 1.qr";
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(filename);
String packageParameters = IOUtils.toString(inputStream, "UTF-8");
inputStream.close();
System.out.println(packageParameters); // prints 123
}
}
此 class 的来源位于 src\main\java\Application.java
。所有路径都是相对于项目的根目录。
我有一组文件作为资源附加到我的项目中。这些文件包含程序读取和处理的数据。 我就是这样做的:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(filename);
packageParameters = IOUtils.toString(inputStream, "UTF-8");
inputStream.close();
一切都很好,直到我尝试读取具有特定名称的文件,例如:
\sets\Тех. тип = 0 Сет. = 1 Комплект 1.qr
getResourceAsStream
returns null
表示找不到这个资源
所以,问题是:如何读取名称中包含西里尔字符、空格和特殊符号的文件? 试图对名称进行编码 - 无济于事。无法将其转换为 URI,因为构造函数会抛出非法符号异常。
任何想法表示赞赏。 花了几天时间分析类似的答案 - 仍然不知道如何解决它。
尝试删除尾部斜杠并将 \
替换为 /
。
我将文件 Тех. тип = 0 Сет. = 1 Комплект 1.qr
放在 src\main\resources\sets
中,内容为
123
这对我有用
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
public class Application {
public static void main(String[] args) throws IOException {
String filename = "sets/Тех. тип = 0 Сет. = 1 Комплект 1.qr";
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(filename);
String packageParameters = IOUtils.toString(inputStream, "UTF-8");
inputStream.close();
System.out.println(packageParameters); // prints 123
}
}
此 class 的来源位于 src\main\java\Application.java
。所有路径都是相对于项目的根目录。