【问题标题】:The FileReader cannot find my text fileFileReader 找不到我的文本文件
【发布时间】:2014-04-30 09:44:35
【问题描述】:

我有一个简单的文本文件,但由于某种原因找不到。我没有看到代码有任何问题,因为我是从一个站点获得的,并且我开始认为我没有将文本文件放在正确的位置。请问有什么建议吗?

代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.nio.file.Path;
import java.nio.file.Paths;

public class MainFavorites {
    public static void main(String[] args) throws IOException {
        /**
        * finds pathway to the file
        */
        //      File file = new File("icecreamTopping.txt");
        //      System.out.println(file.getCanonicalPath());

        BufferedReader reader = null;
        ArrayList <String> myFileLines = new ArrayList <String>();
        try {
            String sCurrentLine;
            reader = new BufferedReader(new FileReader("icecreamTopping.txt"));
            while ((sCurrentLine = reader.readLine()) != null) {
                //System.out.println(sCurrentLine);
                myFileLines.add(sCurrentLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
            System.out.print(e.getMessage());
        } finally {
            try {
                if (reader != null)reader.close();
            } catch (IOException ex) {
                System.out.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
        int numElements = myFileLines.size();
        System.out.println ("there are n lines in the file:" + numElements);

        for (int counter = numElements-1; counter >= 0; counter--) {
            String mylineout = myFileLines.get(counter);
            System.out.println (mylineout);
        }
    }
}

文件内容:

1- Blueberry 
2- Banana Buzz
3- Cookie Batter

我的堆栈跟踪是这样的:

java.io.FileNotFoundException: C:\Users\homar_000\workspace\RankFavorites\icecreamTopping.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at MainFavorites.main(MainFavorites.java:28)

【问题讨论】:

  • "由于某种原因,找不到。"这意味着什么?粘贴堆栈跟踪
  • 哦,你没有指定用于读取文件的字符集
  • 也许有些人只是初学者,EJP?大声笑无论如何,我的堆栈跟踪是这样的: java.io.FileNotFoundException: C:\Users\homar_000\workspace\RankFavorites\icecreamTopping.txt (系统找不到指定的文件)在 java.io.FileInputStream.open(Native Method)在 java.io.FileInputStream.(Unknown Source) 在 java.io.FileInputStream.(Unknown Source) 在 java.io.FileReader.(Unknown Source) 在 MainFavorites.main(MainFavorites.java :28)

标签: java filereader java-io


【解决方案1】:
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


JSONParser parser = new JSONParser();
ObjectMapper mapper = new ObjectMapper();

try {
    
    Object obj = parser.parse(new FileReader("/home/sahan/Desktop/data.json"));
    ObjectNode objNode = mapper.convertValue(obj, ObjectNode.class);
    System.out.println(objNode);

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (ParseException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

【讨论】:

    【解决方案2】:

    找出问题所在。我没有必要添加文件扩展名,所以我删除了 .txt,因为当我保留它时,它读作“icecreamTopping.txt.txt”

    【讨论】:

      【解决方案3】:

      替换下一行

      reader = new BufferedReader(new FileReader("icecreamTopping.txt"));
      

      reader = new BufferedReader(new FileReader("resources/icecreamTopping.txt"));
      

      并将文件放在与 src 文件夹平行的资源文件夹下。


      示例代码:

      从资源文件夹中读取文件abc.txt

      reader = new BufferedReader(new FileReader("resources/abc.txt"));
      

      这是项目结构


      尝试下面的代码找出它指向文件icecreamTopping.txt的位置。

       File f=new File("icecreamTopping.txt");
       System.out.println(f.getAbsolutePath());
      

      得到绝对路径后,将文件放在那里即可。


      --编辑--

      根据你上次的cmets,将icecreamTopping.txt文件直接放在项目RankFavorites中,如下图所示,它一定会解决你的问题。

      【讨论】:

      • 感谢您的帮助。我使用代码查找文件指向的位置,我得到:C:\Users\homar_000\workspace\RankFavorites\icecreamTopping.txt 我试着把它放在那里,但它仍然没有用。甚至 RankFavorites/icecreamTopping.txt 也不起作用。 (我也将 \ 更改为 /)
      【解决方案4】:

      尝试使用 File 类来检测存储中的文件:

      File sdcard = Environment.getExternalStorageDirectory();
      
      //Get the text file
      File file = new File(sdcard,"file.txt");
      
      BufferedReader br = new BufferedReader(new FileReader(file));
      

      【讨论】:

        猜你喜欢
        • 2021-08-30
        • 2014-03-05
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多