我将要读取的文件放入我的资源文件夹
src
|_main
|_resources
|_graphqls
|_test.graphqls
以下代码段读取文件
final String pathToSchemaFile = this.getClass().getClassLoader().getResource("graphqls/test.graphqls").getFile();
final File = new File(pathToSchemaFile);
这是我在评估前面代码段中File
返回的.getFile()
对象时得到的结果。
file:\C:\maven_repository\com\...\app.jar!\graphqls\test.graphqls
运行以下代码new FileReader(file)
时会抛出此异常
Method threw 'java.io.FileNotFoundException' exception.
file:\C:\maven_repository\com\...\app.jar!\graphqls\test.graphqls (The filename, directory name, or volume label syntax is incorrect)
java.io.FileNotFoundException: file:\C:\maven_repository\com\...\app.jar.jar!\graphqls\test.graphqls (The filename, directory name, or volume label syntax is incorrect)
答案 0 :(得分:2)
您正在访问实际位于JAR文件(如ZIP)中的文件。
如果你的jar在类路径上:
Schema::create('users', function (Blueprint $table) {
// ..
$this->timestamp('user_creation_date', 0)->nullable();
$this->timestamp('user_update_date', 0)->nullable();
});
如果它不在类路径上,那么您可以通过以下方式访问它:
InputStream is = YourClass.class.getResourceAsStream("1.txt");
答案 1 :(得分:0)
您可以通过创建InputStreamReader来避免该文件。
InputStreamReader reader = new InputStreamReader(
this.getClass().getResourceAsStream("/graphqls/test.graphqls"),
StandardCharsets.UTF_8
);
建议使用YourClassName.class.getResourceAsStream()
,除非您有特殊原因要使用.getClass&& .getClassLoader。