我在这里阅读了一些资料。那里,但没有得到以下代码工作。基本上,我希望从文件夹'src'中读取一个名为'Administrator'的文本文件。我需要一个相对路径,因为这个项目可能会转移给另一个人。请耐心等待。
public void staffExists () throws IOException
{
//http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java
BufferedReader reader = new BufferedReader(new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt")));
try
{
String line = null;
while ((line = reader.readLine()) != null)
{
if (!(line.startsWith("*")))
{
System.out.println(line);
}
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
reader.close();
}
}
答案 0 :(得分:21)
这是一个有效的绝对路径(在我所知道的系统上):
/path/to/directory/../../otherfolder/etc/
那么other answer所说的是用以下方法获取当前目录的路径:
String filePath = new File("").getAbsolutePath();
然后用你的相对路径连接:
filePath.concat("path to the property file");
答案 1 :(得分:11)
现在我明白了,在这里有点回答&帮助我实现目标。对我的代码进行了简短的编辑。有效。希望它也能帮助一些可怜的灵魂。
String filePath = new File("").getAbsolutePath();
System.out.println (filePath);
//http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java
//http://stackoverflow.com/questions/19874066/how-to-read-text-file-relative-path
BufferedReader reader = new BufferedReader(new FileReader(filePath + "/src/DBTextFiles/Administrator.txt"));
try
{
String line = null;
while ((line = reader.readLine()) != null)
{
if (!(line.startsWith("*")))
{
System.out.println(line);
}
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
reader.close();
}
答案 2 :(得分:1)
这是不正确的:
new FileReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt"))
你想:
new InputStreamReader(getClass().getResourceAsStream ("/DBTextFiles/Administrator.txt"))
答案 3 :(得分:0)
在几乎所有情况下,您应该使用可移动的正斜杠"/"."
在每种情况下,您都应该使用接受文件(父)和文件的文件构造函数。字符串(文件名)或使用System.getProperty("file.separator").