何时在Java中使用flush()?
问题内容:
import java.io. * ;
public class Ser {
public static void main(String args[]) {
try {
John myObj = new John("Sachin", "Cricket");
System.out.println(myObj);
FileOutputStream fos = new FileOutputStream("FileName");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(myObj);
oos.flush();
oos.close();
} catch (Exception e) {
System.out.println("Expection" + e);
System.exit(0);
}
try {
John myObj2;
FileInputStream fis = new FileInputStream("FileName");
ObjectInputStream ois = new ObjectInputStream(fis);
myObj2 = (John) ois.readObject();
ois.close();
System.out.println("New Object" + myObj2);
} catch (Exception e) {
System.out.println("Expection" + e);
System.exit(0);
}
}
}
class John implements Serializable {
private String name;
private String department;
public John(String name, String department) {
this.name = name;
this.department = department;
}
public String toString() {
return "Name" + name + " " + "Department" + department;
}
}
在上面的示例中,我有几个问题。
- 何时使用冲洗方法,为什么要使用它?
- 封闭方法在这里得分如何?
myObj2 = (John) ois.readObject();
…如果我错了,请纠正我,我正在读取文件对象并将其存储到另一个对象中,并对该文件对象进行类型转换。- 序列化或将数据持久保存在Java中有哪些选择。我不希望数据以字节流的形式进入文件。
问题答案:
何时使用冲洗方法,为什么要使用它?
它将冲洗仍由缓冲的所有内容OutputStream
。JavaDoc中提供了详细描述。
封闭方法在这里得分如何?
我不确定“进行分数”是什么意思,但是该close
方法最终关闭了资源(输入或输出),并释放了例如文件句柄。您应该始终在一个finally
块中调用close
来清理操作系统可能具有的所有引用。
InputStream is = null;
try {
is = new FileInputStream(...);
// do stuff
} catch (IOException e) {
// do stuff
} finally {
if (is != null) {
is.close();
}
}
myObj2 =(John)ois.readObject();
…如果我错了,请纠正我,我正在读取文件对象并将其存储到另一个对象中,并对该文件对象进行类型转换。
以某种方式正确,您可以反序列化之前写入文件的对象。这些文件是专有文件,只能由Java理解,因此您的最后一个问题是一个 好 问题!
序列化或将数据持久保存在Java中有哪些选择。我不希望数据以字节流的形式进入文件。
您有很多选择。对于客户端应用程序,您可能需要使用XML,JSON或SQLlite等轻量级数据库。在服务器端,您可能还会查看更健壮的数据库(例如MySQL)。