【问题标题】:Trying to read a text file in res/raw with scanner尝试使用扫描仪读取 res/raw 中的文本文件
【发布时间】:2013-03-01 00:59:59
【问题描述】:

你好,

我正在尝试读取带有Scanner 的文件,以便可以使用字符串的输入来构造其他对象。但是,我的扫描仪在尝试创建它时总是抛出 NullPointerException。我在res/raw 文件夹中有一个pig.txt 文本文件,但我的扫描仪似乎无法访问它。我不知道我做错了什么。我已经注释掉了该方法的其他代码,但仍然出现异常。

public void loadAchievements() {
    try {
        Scanner s = new Scanner(getResources().openRawResource(R.raw.pig));

        /**
         * s = s.useDelimiter("."); Scanner StringScanner; StringScanner =
         * new Scanner(s.next()); StringScanner =
         * StringScanner.useDelimiter(":"); String keep =
         * StringScanner.next(); String StringKeeper = StringScanner.next();
         * this.achievementBoard.add(new Achievement_Item(keep,
         * StringKeeper)); StringScanner.close(); s.close();
         **/
    } catch (NullPointerException e) {
        e.printStackTrace();
        System.out.println("NULLPOINTER");
    }
}

【问题讨论】:

  • 您确定流不是实际上是null吗?
  • 它是NullPointerException。可以使用Log调试,不要使用System.out

标签: android nullpointerexception java.util.scanner android-resources


【解决方案1】:
I had this problem today, and I resolved somehow.
I know that old question, but I would share it if others have stuck.





 public class Question {

        private int numberOfQuestion;
        private String[] myquestion;

        public Question(InputStream file_name) {
            Scanner scanner = null;

            try {
                scanner = new Scanner(file_name);

            } catch (Exception e) {
                Log.d("Question", "Scanner :" + e);
                System.exit(1);
            }

            this.numberOfQuestion = scanner.nextInt();
            scanner.nextLine();
            myquestion = new String[numberOfQuestion];

            for (int i = 0; i < numberOfQuestion; ++i) {
                myquestion[i] = scanner.nextLine();

            }

            scanner.close();


        }
    ---------------------------------------------------------
call:

try { 
  MyScanner myScanner = new MyScanner(getResources().openRawResource( R.raw.input_question)); 
   } catch (Exception e) { 
        Log.d("Error", "input_question.txt"); 
  }

【讨论】:

    【解决方案2】:

    openRawResource() 方法只能用于打开可绘制、声音和原始资源;它会在字符串和颜色资源上失败。由于您的 pig.txt 是一个包含字符串的文本文件,因此 openRawResource() 将无法打开新流,因此您的流为空。

    【讨论】:

    • 那我可以用什么来打开一个字符串文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多