Android系统。从文件中读取时有什么问题?

时间:2014-03-09 21:23:38

标签: android file-io

public class ReadFromFile extends Activity{

    public String readFromFile(String file) {

        String ret = "";

        try {
            InputStream inputStream = openFileInput(file);

            if (inputStream != null) {
                InputStreamReader inputStreamReader = new InputStreamReader(
                        inputStream);
                BufferedReader bufferedReader = new BufferedReader(
                        inputStreamReader);
                String receiveString = "";
                StringBuilder stringBuilder = new StringBuilder();

                while ((receiveString = bufferedReader.readLine()) != null) {
                    stringBuilder.append(receiveString);
                }

                inputStream.close();
                ret = stringBuilder.toString();
            }
        } catch (FileNotFoundException e) {
            Log.d("File not found: ", "");
        } catch (IOException e) {
            Log.d("Can not read file: ", "");
        }

        return ret;
    }
}

03-09 22:17:56.181: W/dalvikvm(14108): threadid=1: thread exiting with uncaught exception (group=0x40caf450)
03-09 22:17:56.261: E/AndroidRuntime(14108): FATAL EXCEPTION: main
03-09 22:17:56.261: E/AndroidRuntime(14108): java.lang.NullPointerException
03-09 22:17:56.261: E/AndroidRuntime(14108):    at android.content.ContextWrapper.openFileInput(ContextWrapper.java:159)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at com.example.anewapp.ReadFromFile.readFromFile(ReadFromFile.java:19)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at com.example.anewapp.MainActivity$6.onClick(MainActivity.java:287)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at android.os.Looper.loop(Looper.java:137)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at android.app.ActivityThread.main(ActivityThread.java:4802)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at java.lang.reflect.Method.invokeNative(Native Method)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at java.lang.reflect.Method.invoke(Method.java:511)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:813)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:580)
03-09 22:17:56.261: E/AndroidRuntime(14108):    at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:0)

我建议如下:

让您的MainActivity 扩展 ReadFromFile:

public class MainActivity extends ReadFromFile { 

然后调用readFromFile方法就像这样

readFromFile("setting.txt");

而不是:

ReadFromFile clr = new ReadFromFile();   
String input = clr.readFromFile("setting.txt");

注意:我还建议将ReadFromFile重命名为ReadFileActiviy,以便更清楚地表明它是一项活动