‘壹’ java:内存中已经有了一个对象,如何使用ByteArrayOutputStream将该对象写入文件呢
ByteArrayOutputStream是将内存中的byte数据作为输出目标,
写入到文件则需要打开文件流,
内存中的对象要持久化有两种方式,一种是直接使用对象的序列化接口,该对象必须实现Serializable接口;另外一种自己写对象序列化接口。
1、ByteArrayOutputStream要写到文件可以通过writeTo方法,但是这样显然太啰嗦了,需要控制flush时机。
2、如果是对象已经实现序列化接口直接使用如下方式
ObjectOutputStreamo=newObjectOutputStream(newFileOutputStream("filename"));
o.writeObject(obj);
‘贰’ java 怎么把数据存到内存中
这里你采纳与否没关系,给你说说编程与内存的关系。
你定义的任何变量,常量,类,方法等等,其实都在内存中,没有所谓的把数据存内存中,这概念,你可以想一下电脑重启或关机后,内存中的所有数据,都会丢失,除非你保存到磁盘中去。
在内存中的数据有两块,第一、缓冲,一般写数据到磁盘的时候开辟出来的内存空间;第二、缓存,一般是从磁盘读数据到内存中开辟出来的内存空间。会这么使用,原因很简单,磁盘读写数据速度与内存不一致(磁盘的存取效率远远小于内存的存取效率),为了提高数据的存取效率,才会这么干的。
一般而言,java中的所谓数据,大部分都是类,从自动引用计数的概念来分析,你想把对象长久的放在内存中,不会被垃圾回收机制释放,注意制药有一个对象在使用/引用你的数据,这条数据就会存在内存中。所以,想servlet中的全局配置参数,随时可以取到还是唯一一份,你可以参考一下。
另外内存使用分堆与栈,堆在面向对象编程中存储对象的,栈是方法或函数执行的时候临时开辟的存储空间,方法或函数执行完毕就会释放。
希望我的回复能帮助到你,采纳与否没关系。有更好的答案,我就隐藏我的回复。
‘叁’ Java.IO中 为什么带缓冲的字节输入输出流速度比不带缓冲的速度快
原理:通过将字节缓冲到内存然后到磁盘比直接通过程序输出到磁盘要快。
缓冲:就是通过缓冲流操作字节读或写入内存。
在内存中就是以流的形式输出。
总结:从内存读取数据比从磁盘读取数据要快。