【问题标题】:Read file from /src/main/resources/从 /src/main/resources/ 读取文件
【发布时间】:2015-02-26 12:04:59
【问题描述】:

我正在尝试做一个 Web 应用程序并遇到问题: 我不知道如何用 Java 打开保存在资源文件夹中的文本文件:

 String relativeWebPath ="/src/main/resources/words.txt";  //Import der des Textdoumentes
 String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
 File f = new File(absoluteDiskPath);

(文件words.txt)

正如您在图片上看到的那样,我正在尝试访问 words.txt,但它不起作用。有什么想法吗?

【问题讨论】:

  • /src/main/resources/,虽然存在于您的项目目录结构中,但可能不是 Web 路径的一部分。
  • 感谢您的回答。 /src/main/resources/ 不工作。我应该如何更改目录结构?

标签: java eclipse path relative-path


【解决方案1】:

如果你想在其他类中访问,比如你有一个实用程序包,并且你有一个 ReadFileUtil.java 类可以打开并读取文件,你可以通过以下方式进行:

public class ReadFileUtil {

        URL url = ReadFileUtil.class.getResource("/"+yourFileName);
        File file = new File(url.getPath());

    }

【讨论】:

    【解决方案2】:

    使用此代码查找要打开的文件的路径。

    import java.net.URL;
    
    [...]
    
    URL url = this.getClass().getResource("/words.txt");
    String absoluteDiskPath = url.getPath();
    

    【讨论】:

      【解决方案3】:

      为获得最佳实践并避免这些问题,请将文本文件 (words.txt) 放入 WEB_INF 文件夹(这是资源的安全文件夹)。那么:

      ServletContext context = getContext();
      InputStream resourceContent = context.getResourceAsStream("/WEB-INF/words.txt");
      

      参考:https://stackoverflow.com/a/4342095/3728901

      【讨论】:

      • 感谢您的回答。可悲的是,你的答案对我不起作用。
      • @dovy,在这种情况下,由于目录问题,您必须维护两个不同的代码(java 独立,Web)。我认为这不是一个好主意。
      • 如果文件位于单独的.jar 中的src/main/resources 文件夹中怎么办?没办法移到webapp模块的WEB_INF文件夹下...
      【解决方案4】:

      试试这个。

      InputStream is = getClass().getClassLoader()
                               .getResourceAsStream("/words.txt");
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      

      【讨论】:

      • Thread.currentThread().getContextClassLoader() 可能是更好的选择,如下所述:stackoverflow.com/questions/3160691/…
      • 感谢您的回答,但这对我不起作用。还是找不到文件。
      • 去掉“/”,只需:ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); InputStream is = classLoader.getResourceAsStream("words.txt");
      猜你喜欢
      • 2014-04-01
      • 2015-03-22
      • 2015-09-16
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      相关资源
      最近更新 更多