Java 序列化数据并写入文件

Java 序列化数据并写入文件,java,android,Java,Android,当我尝试将对象写入文件时,会遇到此错误 02-05 11:31:41.818: W/System.err(2414): java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.OutputStream.write(byte[], int, int)' on a null object reference 02-05 11:31:41.818: W/System.err(2414): at

当我尝试将对象写入文件时,会遇到此错误

02-05 11:31:41.818: W/System.err(2414): java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.OutputStream.write(byte[], int, int)' on a null object reference
02-05 11:31:41.818: W/System.err(2414):     at java.io.DataOutputStream.writeShort(DataOutputStream.java:192)
02-05 11:31:41.818: W/System.err(2414):     at java.io.ObjectOutputStream.writeStreamHeader(ObjectOutputStream.java:1795)
02-05 11:31:41.818: W/System.err(2414):     at java.io.ObjectOutputStream.<init>(ObjectOutputStream.java:271)
02-05 11:31:41.818: W/System.err(2414):     at com.data.mydata.addData(addData.java:173)
//AllData扩展可序列化

List<AllData>valuelist = new ArrayList<AllData>(sensor.values());

if(valuelist.size() != 5){
                try {
                    //fileStream = new FileOutputStream(filename);
                    oos = new ObjectOutputStream(fileStream);
                    oos.writeObject(valuelist);

                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }else{
                try {
                    oos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
Listvaluelist=newArrayList(sensor.values());
如果(valuelist.size()!=5){
试一试{
//fileStream=新的FileOutputStream(文件名);
oos=新的ObjectOutputStream(文件流);
oos.writeObject(值列表);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}否则{
试一试{
oos.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}

基本上,当我的arraylist的大小不等于5时,我需要继续写入该文件,一旦它为5,我需要停止它。我的文件在SDCard的Documents/Sensor Data/myfile.txt中正确创建。您能帮助我如何解决此错误吗?

从错误中可以看出,
valuelist
的某些元素为空。 做点像

         try {
                //fileStream = new FileOutputStream(filename);
                oos = new ObjectOutputStream(fileStream);
               + List<AllData> nonNullList = new ArrayLis<>();
               + for(AllData aData: valuelist)
               +    if(aData != null) nonNullList.add(aData);
               + oos.writeObject(nonNullList);

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

可能重复的感谢您的时间和帮助:)我使用了这个,但仍然存在相同的问题嗯,我不知道数据结构,但您肯定是在对空对象调用write。您应该调试并检查AllData中的某些字段是否为空
         try {
                //fileStream = new FileOutputStream(filename);
                oos = new ObjectOutputStream(fileStream);
               + List<AllData> nonNullList = new ArrayLis<>();
               + for(AllData aData: valuelist)
               +    if(aData != null) nonNullList.add(aData);
               + oos.writeObject(nonNullList);

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
   if(valuelist.size() != 5){