从项目目录中的文件夹中读取文件

在JSP项目中,我正在从目录中读取文件。 如果我给出完整的路径,那么我可以轻松地读取文件

BufferedReader br = new BufferedReader(new FileReader("C:\\ProjectFolderName\\files\\BB.key")); 

但我不想写完整的路径,而只是想给出包含文件的文件夹名称,如下文。

 BufferedReader br = new BufferedReader(new FileReader("\\files\\BB.key")); 

这个怎么做?

 String currentDirectory = new File("").getAbsolutePath(); System.out.println(currentDirectory); BufferedReader br = new BufferedReader(new FileReader(currentDirectory + "\\files\\BB.key")); 

我尝试了上面仍然无法从文件中读取

打印行给出以下输出

信息:C:\ Program Files \ NetBeans 7.3

使用

 File file = request.getServletContext().getRealPath("/files/BB.key"); 

这会将URL路径相对(因此为“/”)从Web内容目录转换为文件系统File。

对于便携式Web应用程序,并且知道该文件在Windows Latin-1中,请明确说明编码,否则将给出主机的默认OS编码。

 BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(file), "Windows-1252")); 

如果文件存储为资源,则在/ WEB-INF / classes /下也可以使用

 BufferedReader br = new BufferedReader(new InputStreamReader( getClass().getResourceAsStream("/files/BB.key"), "Windows-1252")); 

在这种情况下,该文件将驻留在/WEB-INF/classes/files/BB.key下。

最好将文件作为类路径资源而不是文件系统资源来读取。 这有助于您避免硬编码或参数化特定于环境的文件夹。 关注这篇文章从类路径位置读取文件“当前项目”

添加这个:

 private static String currentDirectory = new File("").getAbsolutePath(); 

并将您的BufferedReader更改为:

 BufferedReader br = new BufferedReader(new FileReader(currentDirectory + "\\files\\BB.key")); 

currentDirectory将包含项目目录所在的任何路径(您从中运行程序)。

如果您通过相对路径引用文件(新的FileReader(“files / BB.key”)),那么它将在执行程序时解析当前工作目录。

你究竟想要达到什么目的?

如果要使用程序打包文件然后以编程方式访问该文件,请将其放在类路径上,并使用其中一个Class.getResource …方法将其作为ressource加载。

Interesting Posts