Java 在android上创建文件

Java 在android上创建文件,java,android,nullpointerexception,android-context,fileoutputstream,Java,Android,Nullpointerexception,Android Context,Fileoutputstream,我正在尝试用我的android应用程序创建一个文件。我需要写入特定类中的文件。下面列出了我目前拥有的代码。当它试图写入文件时,我不断收到nullpointerexception。下面列出了确切的错误。我是android新手,所以请详细说明 有人能告诉我我做错了什么,以及如何解决这个问题吗 你应该通过内容提供商访问文件,我认为路径是错误的。。。看看这个你应该通过内容提供商访问文件,我认为路径是错误的。。。看看这个它看起来像是在你的构造函数中做的。你不能那样做。您需要等待onCreate(),此

我正在尝试用我的android应用程序创建一个文件。我需要写入特定类中的文件。下面列出了我目前拥有的代码。当它试图写入文件时,我不断收到
nullpointerexception
。下面列出了确切的错误。我是android新手,所以请详细说明

有人能告诉我我做错了什么,以及如何解决这个问题吗




你应该通过内容提供商访问文件,我认为路径是错误的。。。看看这个

你应该通过内容提供商访问文件,我认为路径是错误的。。。看看这个

它看起来像是在你的构造函数中做的。你不能那样做。您需要等待onCreate(),此时您知道对象已初始化。

看起来您正在构造函数中执行此操作。你不能那样做。您需要等到onCreate(),也就是您知道对象已经初始化的时候。

下面的代码就是我发现的,并且正在工作。抱歉,发邮件花了这么长时间



下面的代码是我发现并正在工作的代码。抱歉,发邮件花了这么长时间



我已经把它作为参考。这是我从参考资料中得到的。我不得不做一些更改,因为它不适用于我的实现。我做了一些更改,这是正在发生的新错误,您有什么想法如何消除这个新的nullpointerexception吗?我已经在发生错误的代码中进行了注释。我没有看到代码中有任何错误,可能尝试将数据变量声明为SmartDataObjectIt。它已经存在,只是为了节省空间而从代码段中删除了。我已经将其用作参考。这是我从参考资料中得到的。我不得不做一些更改,因为它不适用于我的实现。我做了一些更改,这是正在发生的新错误,您有什么想法如何消除这个新的nullpointerexception吗?我已经在发生错误的代码中进行了注释。我没有看到代码中有任何错误,可能尝试将数据变量声明为SmartDataObjectIt。它已经是了,只是为了节省空间而从代码段中删除了它。我想该类必须是一个活动才能有onCreate()方法?我的类不是一个活动。我做了一些更改,这是正在发生的新错误,你有什么想法如何摆脱这个新的nullpointerexception吗?我已经在发生错误的代码中进行了注释。我认为该类必须是活动才能有onCreate()方法?我的类不是一个活动。我做了一些更改,这是正在发生的新错误,你有什么想法如何摆脱这个新的nullpointerexception吗?我已经在发生错误的代码中进行了注释。
//the class where i need to create and write to the file
public class DataRobot {
    Context tThis;
    FileOutputStream fOut;
    OutputStreamWriter writer;

    public DataRobot(SmartApp smartApp) extends Activity {
        tThis = (Context) smartApp;
    }
    public void onCreate(Bundle savedInstanceState) {
        try {
            //file = new File("/sdcard", "test.csv");
            fOut = openFileOutput("test.csv", MODE_WORLD_READABLE);
            writer = new OutputStreamWriter(fOut);
        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void analyzeData(SmartDataObject temp) {
        data = temp;
        try {
                //the following line is where the error is occurring.
            writer.write(Double.toString(data.getHeartRate()));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     }
}   
//the error
03-26 03:47:53.924: WARN/System.err(273): java.lang.NullPointerException
03-26 03:47:53.934: WARN/System.err(273):     at cpe495.smartapp.DataRobot.analyzeData(DataRobot.java:80)
03-26 03:47:53.946: WARN/System.err(273):     at cpe495.smartapp.SmartApp$1.dataReceivedReceived(SmartApp.java:49)
03-26 03:47:53.956: WARN/System.err(273):     at cpe495.smartapp.ConnectDevice.fireDataReceivedEvent(ConnectDevice.java:79)
03-26 03:47:53.956: WARN/System.err(273):     at cpe495.smartapp.ConnectDevice.run(ConnectDevice.java:46)
03-26 03:47:53.965: WARN/System.err(273):     at java.lang.Thread.run(Thread.java:1096)
public class DataRobot {
    Context tThis; //was enabled for preferences
    private FileOutputStream fOut;
    private OutputStreamWriter writer;

    public DataRobot(SmartApp smartApp) {
        tThis = (Context) smartApp;

    }

    public void analyzeData(SmartDataObject temp) {
        try {
            fOut = tThis.openFileOutput("test.csv", tThis.MODE_APPEND);
            writer = new OutputStreamWriter(fOut);
        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            writer.write("Test");//0
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}