【问题标题】:Java BufferedReader filepath issueJava BufferedReader 文件路径问题
【发布时间】:2016-10-19 14:26:11
【问题描述】:

我正在尝试使用文本文件来填充游戏板的 2D 数组。我似乎无法让读者真正阅读文件。我不断收到以下错误:

“无法打开文件'C://git/cse116f16/src/boardpieces/board.txt'在线程“main”java.lang.NullPointerException中出现异常”。

我知道这是因为我没有为文件路径使用正确的语法,但我终其一生都无法弄清楚应该是什么。我把它存储在C:\Users\myname\git\cse116f16\src\boardpieces\board.txt。

我需要传递给 FileReader 以读取此文件的字符串是什么?


编辑:方法如下,也许问题不是我想的那样。

还应该注意这是在一个 git 存储库上,所以我需要确保它可以被拉它的每个人阅读。

    public Character[][] populateArray(String fileName){
        String line = null;
        Character[][] retVal = new Character[26][28];
        int lineNum = 0;
        try {
            FileReader fileReader = new FileReader(fileName);
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            //Assigns each character to it's corresponding place in the array
            while((line = bufferedReader.readLine()) != null) {
                for (int i = 0; i < 26; i++){
                    retVal[lineNum][i] = line.charAt(i);
                }                   
            }   
            bufferedReader.close();         
        }
        catch(FileNotFoundException ex) {
            System.out.println("Unable to open file '" + fileName + "'");                
        }
        catch(IOException ex) {
            System.out.println("Error reading file '" + fileName + "'");                  
        }
        return retVal;
    }

    public void populateBoard(){
        String path = "C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt";

        Character[][] arr = populateArray(path);

        //the rest of the method...

【问题讨论】:

  • 这里我不清楚,\\而不是\,我可以只使用一个斜杠来做到这一点,你也可以分享你的文件内容以提供更好的回答

标签: java bufferedreader filereader


【解决方案1】:
File myFile = new File("C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt");
BufferedReader reader = new BufferedReader(new FileReader(myFile));
String text;
while (reader.hasNextLine()){
    text += reader.nextLine();
}

【讨论】:

  • 尝试通过在代码前面添加四个空格将其显示为代码。
  • 你可以写 \\\\ 而不是 \\
【解决方案2】:

请尝试

final File file =
        new File("C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt");
final FileReader fileReader = new FileReader(file);

【讨论】:

    【解决方案3】:

    试试这个:

    String fileName = "C:\\Users\\myname\\git\\cse116f16\\src\\boardpieces\\board.txt";
    //or "C:/Users/myname/git/cse116f16/src/boardpieces/board.txt"
    File file = new File(fileName);
    FileReader fileReader = new FileReader(file);
    

    斜线必须类似于\\ 或/。

    (\ 和 / 都有效,但由于 \ 是转义字符,java 将 \ 读取为转义字符,因此通过添加另一个字符,您基本上只写斜杠。)

    然后你尝试打开File然后传给FileReader

    【讨论】:

    • @Bryan 问题是你在做new FileReader(fileName),你应该在做new FileReader(new File(fileName))
    • @Bryan 你记得把myname改成你的用户名吗?
    • @Bryan 我建议转到实际文件位置单击copy path,然后使用您的IDE、notepad++ 或任何其他编辑器,将所有\ 替换为/。 (这就是我所做的)。
    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多