Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用扫描仪读取文件时获取空指针异常_Java_Android - Fatal编程技术网

Java 使用扫描仪读取文件时获取空指针异常

Java 使用扫描仪读取文件时获取空指针异常,java,android,Java,Android,我想读取一个文本文件并解析字符串直到eof..这里是一个代码片段。。programs.txt位于资产目录下 public void insert_programs() throws FileNotFoundException { BufferedReader bfr = null; try { bfr = new BufferedReader(new InputStreamReader(getAssets().open("

我想读取一个文本文件并解析字符串直到eof..这里是一个代码片段。。programs.txt位于资产目录下

    public void insert_programs() throws FileNotFoundException {
    BufferedReader bfr = null;
    try {
        bfr = new BufferedReader(new 
                InputStreamReader(getAssets().open("programs.txt"))); // <-- NPE occurs on that line 

    } catch (IOException e) {
        e.printStackTrace();
    }
    Scanner pgm = new Scanner(bfr);
    pgm.useDelimiter("*{3}");
    while (pgm.hasNext()) {
        String str = pgm.next();
            process(str);
        }
    }

看起来您的BufferedReader将为null。您是否尝试过将扫描程序代码放入try-catch块中。如果您的程序得到IOException,那么bfr将为null,您将得到NPE

public void insert_programs() throws FileNotFoundException { 
    BufferedReader bfr = null; 
    try { 
        bfr = new BufferedReader(new  
                InputStreamReader(getAssets().open("programs.txt"))); 

Scanner pgm = new Scanner(bfr); 
    pgm.useDelimiter("*{3}"); 
    while (pgm.hasNext()) { 
        String str = pgm.next(); 
            process(str); 
        }
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 

    } 

看起来您的BufferedReader将为null。您是否尝试过将扫描程序代码放入try-catch块中。如果您的程序得到IOException,那么bfr将为null,您将得到NPE

public void insert_programs() throws FileNotFoundException { 
    BufferedReader bfr = null; 
    try { 
        bfr = new BufferedReader(new  
                InputStreamReader(getAssets().open("programs.txt"))); 

Scanner pgm = new Scanner(bfr); 
    pgm.useDelimiter("*{3}"); 
    while (pgm.hasNext()) { 
        String str = pgm.next(); 
            process(str); 
        }
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 

    } 

将此添加到代码中:

bfr = new BufferedReader(new 
            InputStreamReader(this.getAssets().open("programs.txt")));

将此添加到代码中:

bfr = new BufferedReader(new 
            InputStreamReader(this.getAssets().open("programs.txt")));

该方法正在抛出
NullPointerException
。您正在扩展
ContextWrapper
(或扩展它的另一个类),但它似乎尚未正确初始化。
ContextWrapper
中的基为空。

该方法正在抛出
NullPointerException
。您正在扩展
ContextWrapper
(或扩展它的另一个类),但它似乎尚未正确初始化。
ContextWrapper
中的基为空。

您是否愿意将您的代码放在NPE发生的位置?(使用类似于
//的注释,您能提供您看到的输出吗?您的问题是什么?我已经添加了注释..我也添加了日志。您是否愿意在发生NPE的地方添加代码?(使用类似于
//的注释,你能提供你看到的输出吗?你的问题到底是什么?我已经添加了注释..我也放置了日志