Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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
如何从android中使用writeobject创建的文件中删除不需要的数据 我是Android/java新手,其实是C++程序员。在我的Android项目中,我想把一些结构化的数据写入文件并用C++程序读取。但是写入的数据文件包含结构化数据和一些不需要的数据。如何在写入文件时避免不需要的数据。我也为我的程序粘贴代码,程序不包含错误,仅供参考 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class TestAppActivity extends Activity implements Serializable { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { Example example = new Example(); example.number = 50; example.name = "Test_Value"; ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(new File(getCacheDir(),"")+"/text.dat")); out.writeObject((Example) example); out.close(); ObjectInputStream in = new ObjectInputStream( new FileInputStream(new File(getCacheDir(), "") + "/text.dat")); Example readed = (Example)in.readObject(); in.close(); Log.e("Received", readed.number + " " + readed.name ); } catch (Exception e) { // TODO Auto-generated catch block Log.e("__ERROR__", e.toString()); } } class Example implements Serializable { public int number; public String name; } }_Java_Android_Serialization - Fatal编程技术网

如何从android中使用writeobject创建的文件中删除不需要的数据 我是Android/java新手,其实是C++程序员。在我的Android项目中,我想把一些结构化的数据写入文件并用C++程序读取。但是写入的数据文件包含结构化数据和一些不需要的数据。如何在写入文件时避免不需要的数据。我也为我的程序粘贴代码,程序不包含错误,仅供参考 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class TestAppActivity extends Activity implements Serializable { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { Example example = new Example(); example.number = 50; example.name = "Test_Value"; ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(new File(getCacheDir(),"")+"/text.dat")); out.writeObject((Example) example); out.close(); ObjectInputStream in = new ObjectInputStream( new FileInputStream(new File(getCacheDir(), "") + "/text.dat")); Example readed = (Example)in.readObject(); in.close(); Log.e("Received", readed.number + " " + readed.name ); } catch (Exception e) { // TODO Auto-generated catch block Log.e("__ERROR__", e.toString()); } } class Example implements Serializable { public int number; public String name; } }

如何从android中使用writeobject创建的文件中删除不需要的数据 我是Android/java新手,其实是C++程序员。在我的Android项目中,我想把一些结构化的数据写入文件并用C++程序读取。但是写入的数据文件包含结构化数据和一些不需要的数据。如何在写入文件时避免不需要的数据。我也为我的程序粘贴代码,程序不包含错误,仅供参考 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class TestAppActivity extends Activity implements Serializable { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { Example example = new Example(); example.number = 50; example.name = "Test_Value"; ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(new File(getCacheDir(),"")+"/text.dat")); out.writeObject((Example) example); out.close(); ObjectInputStream in = new ObjectInputStream( new FileInputStream(new File(getCacheDir(), "") + "/text.dat")); Example readed = (Example)in.readObject(); in.close(); Log.e("Received", readed.number + " " + readed.name ); } catch (Exception e) { // TODO Auto-generated catch block Log.e("__ERROR__", e.toString()); } } class Example implements Serializable { public int number; public String name; } },java,android,serialization,Java,Android,Serialization,提前感谢ObjectOutputStream将您的对象写入一个文件中,以便以后其他Java程序可以读取它。如果您希望控制数据写入文件的方式,最好不要使用ObjectOutputStream并自行序列化数据,例如xml或json 或者,您可以让对象实现接口,但这要求您同时实现readExternal和writeExternal方法,因此您仍然需要自己序列化对象。您需要一些自定义序列化,具体取决于所需的格式。由于endianness等潜在问题,二进制格式将非常棘手。为此,您可以使用NIO字节缓冲区:

提前感谢

ObjectOutputStream将您的对象写入一个文件中,以便以后其他Java程序可以读取它。如果您希望控制数据写入文件的方式,最好不要使用ObjectOutputStream并自行序列化数据,例如xml或json


或者,您可以让对象实现接口,但这要求您同时实现
readExternal
writeExternal
方法,因此您仍然需要自己序列化对象。

您需要一些自定义序列化,具体取决于所需的格式。由于endianness等潜在问题,二进制格式将非常棘手。为此,您可以使用NIO字节缓冲区:

您可以在那里调整endianness并以预定义的偏移量存储二进制值

如果可以接受基于文本的格式,我建议JSON数据绑定:

jst就这么简单:

JSONMarshaller.marshall(<outputStremWriterYouHaveToCreate>,<objectToSerialize>)
JSONMarshaller.marshaller(,)

将对象(也是对象树、数组)转换为JSON数据流

您指的是什么“不需要的数据”?为什么不使用明文或XML或其他东西来读写呢?不需要的数据包含C++中的类名、一些代码等,简单的写方法包含了一个使用Fr.Wrand函数的文件结构,是Android中任何一种等价的方法。