相关疑难解决方法(0)

将文件加载为InputStream的不同方法

有什么区别:

InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName)
Run Code Online (Sandbox Code Playgroud)

InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName)
Run Code Online (Sandbox Code Playgroud)

InputStream is = this.getClass().getResourceAsStream(fileName)
Run Code Online (Sandbox Code Playgroud)

每个人何时比其他人更适合使用?

我想要读取的文件在类路径中作为我的类来读取文件.我的类和文件位于同一个jar中,并打包在EAR文件中,并部署在WebSphere 6.1中.

java inputstream

210
推荐指数
3
解决办法
19万
查看次数

如何将文本文件资源读入Java单元测试?

我有一个单元测试,需要使用位于的XML文件src/test/resources/abc.xml.获取文件内容的最简单方法是String什么?

java unit-testing

196
推荐指数
6
解决办法
23万
查看次数

从Spring Boot中的resources文件夹中读取文件

我正在使用Spring Boot和json-schema-validator.我正在尝试读取jsonschema.json从该resources文件夹调用的文件.我尝试了几种不同的方法,但我无法让它发挥作用.这是我的代码.

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("jsonschema.json").getFile());
JsonNode mySchema = JsonLoader.fromFile(file);
Run Code Online (Sandbox Code Playgroud)

这是文件的位置.

在此输入图像描述

在这里,我可以在文件classes夹中看到该文件.

在此输入图像描述

但是当我运行代码时,我得到以下错误.

jsonSchemaValidator error: java.io.FileNotFoundException: /home/user/Dev/Java/Java%20Programs/SystemRoutines/target/classes/jsonschema.json (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我在代码中做错了什么?

java spring spring-boot json-schema-validator

45
推荐指数
11
解决办法
11万
查看次数

通过getClass()加载文件.getResource()

我已经按照加载资源文件的方式使用了getClass.getResource(path).代码片段在这里:

String url = "Test.properties";

System.out.println("Before printing paths..");
System.out.println("Path2: "+ getClass().getResource(url).getPath());

FileInputStream inputStream = new FileInputStream(new File(getClass().getResource(url).toURI()));
i_propConfig.load(inputStream);
inputStream.close();
Run Code Online (Sandbox Code Playgroud)

我已经在eclipse中使用层次结构配置它(在源代码下有一个名为SwingDemo的文件夹.在SwingDemo中有我的java文件以及资源文件)...

  1. SRC
    • SwingDemo
      1. CustomDialog.java
      2. Test.properties

当我在日食上运行时,一切运行正常.但是一旦我尝试从cmd行运行应用程序,就会出现空指针异常.

命令行部署层次结构如下:

文件夹: D:\Work\Java Progrms\SwingDemo

层次:

  1. SwingDemo
    • CustomDialog.java
    • Test.properties

首先,我SwingDemo从命令行(javac CustomDialog.java)在文件夹中编译了这个文件.然后我将一步回到Java Programs文件夹(正如我在.java类中提到的那样)并使用着名的程序运行应用程序

java SwingDemo.CustomDialog
Run Code Online (Sandbox Code Playgroud)

我之前使用新的FileInputStream("path")时,我曾经遵循类似的步骤.做这种方式后我得到空指针异常..

我认为getClass().getResource(url)无法从特定目录加载文件.这就是我将资源放在与我的java文件相同的目录中的原因.它在Eclipse中运行良好.但是当我从命令行运行时,为什么这会出错.

java load file embedded-resource

42
推荐指数
2
解决办法
14万
查看次数