Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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
使用InputStream和android扫描仪从.txt文件读取数据_Android_File_Text_Inputstream - Fatal编程技术网

使用InputStream和android扫描仪从.txt文件读取数据

使用InputStream和android扫描仪从.txt文件读取数据,android,file,text,inputstream,Android,File,Text,Inputstream,从.txt文件读取数据时遇到问题。当我运行应用程序时,我收到一条错误消息,应用程序崩溃,我怀疑这与读取文本文件或将其从输入流转换为扫描仪有关。我有以下代码: FileExaminer a = new FileExaminer(); FileExaminer b = new FileExaminer(); FileExaminer c = new FileExaminer(); @Override protected void onCreate(Bundle savedInst

从.txt文件读取数据时遇到问题。当我运行应用程序时,我收到一条错误消息,应用程序崩溃,我怀疑这与读取文本文件或将其从输入流转换为扫描仪有关。我有以下代码:

FileExaminer a = new FileExaminer();
FileExaminer b = new FileExaminer();
FileExaminer c = new FileExaminer();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try{
            readFile.runMethods();
        } catch (Exception e) {
            System.out.println("Error in Main");
        }
    }


我的错误日志如下:

07-01 02:10:05.113: D/AndroidRuntime(2174): Shutting down VM
07-01 02:10:05.173: W/dalvikvm(2174): threadid=1: thread exiting with uncaught exception (group=0xb1cf6b20)
07-01 02:10:05.213: E/AndroidRuntime(2174): FATAL EXCEPTION: main
07-01 02:10:05.213: E/AndroidRuntime(2174): Process: com.aghgb.pokedex, PID: 2174
07-01 02:10:05.213: E/AndroidRuntime(2174): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.aghgb.pokedex/com.aghgb.pokedex.Main}: java.lang.NullPointerException
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.os.Looper.loop(Looper.java:136)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.app.ActivityThread.main(ActivityThread.java:5017)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at java.lang.reflect.Method.invokeNative(Native Method)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at java.lang.reflect.Method.invoke(Method.java:515)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at dalvik.system.NativeStart.main(Native Method)
07-01 02:10:05.213: E/AndroidRuntime(2174): Caused by: java.lang.NullPointerException
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.content.ContextWrapper.getAssets(ContextWrapper.java:83)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at com.aghgb.pokedex.FileExaminer.<init>(FileExaminer.java:13)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at com.aghgb.pokedex.Main.<init>(Main.java:7)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at java.lang.Class.newInstanceImpl(Native Method)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at java.lang.Class.newInstance(Class.java:1208)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
07-01 02:10:05.213: E/AndroidRuntime(2174):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
07-01 02:10:05.213: E/AndroidRuntime(2174):     ... 11 more
07-01 02:10:05.113:D/AndroidRuntime(2174):关闭虚拟机
07-01 02:10:05.173:W/dalvikvm(2174):threadid=1:线程以未捕获异常退出(组=0xb1cf6b20)
07-01 02:10:05.213:E/AndroidRuntime(2174):致命异常:主
07-01 02:10:05.213:E/AndroidRuntime(2174):进程:com.aghgb.pokedex,PID:2174
07-01 02:10:05.213:E/AndroidRuntime(2174):java.lang.RuntimeException:无法实例化活动组件信息{com.aghgb.pokedex/com.aghgb.pokedex.Main}:java.lang.NullPointerException
07-01 02:10:05.213:E/AndroidRuntime(2174):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
07-01 02:10:05.213:E/AndroidRuntime(2174):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
07-01 02:10:05.213:E/AndroidRuntime(2174):在android.app.ActivityThread.access$800(ActivityThread.java:135)
07-01 02:10:05.213:E/AndroidRuntime(2174):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-01 02:10:05.213:E/AndroidRuntime(2174):在android.os.Handler.dispatchMessage(Handler.java:102)上
07-01 02:10:05.213:E/AndroidRuntime(2174):在android.os.Looper.loop(Looper.java:136)上
07-01 02:10:05.213:E/AndroidRuntime(2174):位于android.app.ActivityThread.main(ActivityThread.java:5017)
07-01 02:10:05.213:E/AndroidRuntime(2174):位于java.lang.reflect.Method.Invokenactive(本机方法)
07-01 02:10:05.213:E/AndroidRuntime(2174):位于java.lang.reflect.Method.invoke(Method.java:515)
07-01 02:10:05.213:E/AndroidRuntime(2174):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-01 02:10:05.213:E/AndroidRuntime(2174):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-01 02:10:05.213:E/AndroidRuntime(2174):在dalvik.system.NativeStart.main(本机方法)
07-01 02:10:05.213:E/AndroidRuntime(2174):由以下原因引起:java.lang.NullPointerException
07-01 02:10:05.213:E/AndroidRuntime(2174):位于android.content.ContextWrapper.getAssets(ContextWrapper.java:83)
07-01 02:10:05.213:E/AndroidRuntime(2174):在com.aghgb.pokedex.FileTester上。(FileTester.java:13)
07-01 02:10:05.213:E/AndroidRuntime(2174):位于com.aghgb.pokedex.Main.(Main.java:7)
07-01 02:10:05.213:E/AndroidRuntime(2174):位于java.lang.Class.newInstanceImpl(本机方法)
07-01 02:10:05.213:E/AndroidRuntime(2174):位于java.lang.Class.newInstance(Class.java:1208)
07-01 02:10:05.213:E/AndroidRuntime(2174):在android.app.Instrumentation.newActivity(Instrumentation.java:1061)上
07-01 02:10:05.213:E/AndroidRuntime(2174):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
2007-01 02:10:05.213:E/AndroidRuntime(2174):。。。还有11个

提前感谢。

要阅读.txt文件,您可以使用以下方法:

 try {
    txtFileRead("filename.txt");
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


public List<String> txtFileRead(String filename) throws IOException {
    List<String> readData = new ArrayList<String>();
    AssetManager assets = context.getAssets();
    BufferedReader reader = new BufferedReader(new InputStreamReader(assets.open(filename)));
    while(true) {
        String line = reader.readLine();
        if(line == null) {
            break;
        }
        lines.add(line);
    }
    return lines;
}
试试看{
txtFileRead(“filename.txt”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
公共列表txtFileRead(字符串文件名)引发IOException{
List readData=new ArrayList();
AssetManager资产=context.getAssets();
BufferedReader=new BufferedReader(new InputStreamReader(assets.open(filename));
while(true){
字符串行=reader.readLine();
如果(行==null){
打破
}
行。添加(行);
}
回流线;
}

txtFileRead()
中,我正在读取文本文件并将读取的数据添加到列表中。

经过几个小时的研究和反复试验,我得出了以下结论:

    try {
        file = new Scanner(getResources().openRawResource(R.raw.pokemon_data)); 
        System.out.println("File Scanned");
        // do reading, usually loop until end of file reading 
        while (file.hasNext()) {
            a = file.next();
            b = file.next();
            c = file.next();
            System.out.printf("%s %s %s\n", a, b, c);
        }
    } catch (Exception e) {
        System.out.println("Error opening/reading file");
    } finally {
        if (file != null) {
            file.close();
        }
    }

此代码用于打印出已存储在列中的文本文件,只要该文件在原始文件夹中,该文件就可以工作。在while循环中添加更多变量将增加显示的列数。

FileChecker中的第13行是什么?是什么导致了
NullPointerException
    try {
        file = new Scanner(getResources().openRawResource(R.raw.pokemon_data)); 
        System.out.println("File Scanned");
        // do reading, usually loop until end of file reading 
        while (file.hasNext()) {
            a = file.next();
            b = file.next();
            c = file.next();
            System.out.printf("%s %s %s\n", a, b, c);
        }
    } catch (Exception e) {
        System.out.println("Error opening/reading file");
    } finally {
        if (file != null) {
            file.close();
        }
    }