当前位置: 首页 > 面试题库 >

何时在Java中使用flush()?

相弘和
2023-03-14
问题内容
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;

    }

}

在上面的示例中,我有几个问题。

  1. 何时使用冲洗方法,为什么要使用它?
  2. 封闭方法在这里得分如何?
  3. myObj2 = (John) ois.readObject(); …如果我错了,请纠正我,我正在读取文件对象并将其存储到另一个对象中,并对该文件对象进行类型转换。
  4. 序列化或将数据持久保存在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)。



 类似资料:
  • 问题内容: StringBuilder在Java中,通常最好使用a 进行字符串连接。总是这样吗? 我的意思是:创建对象,调用方法并最终已经很小,然后将现有字符串与+运算符连接成两个字符串的开销是小的,还是建议仅用于两个以上的字符串? 如果有这样的阈值,它取决于什么(也许是字符串长度,但以哪种方式)? 最后,你是否会以+级联的可读性和简洁性为代价,以较小的情况(例如两个,三个或四个字符串)的性能为代

  • 我有一个Employee类,它有如下3个字段。 为此,我希望根据员工姓名(empName)排序,如果多个员工的姓名相同,则根据员工id(empId)排序。 为此,我编写了一个自定义比较器,使用java.util.比较器如下所示。 我已经创建了8个Employee对象并添加到ArrayList中,如下所示。 并使用上述比较器对列表进行如下排序。 它工作得非常好。但这可以使用类似的方法来完成,如下所示

  • 问题内容: 我希望这将是足够的信息,所以就在这里。如果您需要更多信息,请在评论中了解。 我有一班有两个内部班。内部类每个都有两个方法来调用外部类中的方法。因此,它看起来像这样: 重要的是要注意: 这是针对Android应用的。的实例,并传递给作为网页视图一个JavaScript接口,所以并可以随时调用,没有特定的顺序。 目前,我在使用现有代码(不使用synced关键字)时遇到了一个问题,该问题在同

  • 问题内容: 在什么情况下,枚举比保证唯一元素的Collection(例如,java.util.Set的实现者)更合适? (这是我上一个问题的跟进) 问题答案: 基本上是在编译时就知道的一组定义明确的固定值。 您可以很容易地将枚举用作集合(通过EnumSet),它允许您定义行为,按名称引用元素,打开元素等。

  • 我碰到一堆代码 但是如果我使用普通的ArrayList它会给我输入图像描述时的错误herstrong texte善意的帮助

  • 问题内容: 我知道这将是一种不好的做法,尽管我知道我无法解释原因。 我认为您只应该对 不应该发生的 事情使用异常。我之所以问这个问题,是因为我有时会错误地使用异常。如果您的程序运行的 是标准情况, 是否应该引发异常? 问题答案: 您是对的:例外是指 特殊 情况。使用它们来控制正常的控制流不仅会掩盖代码的意图(这足以使它失去资格),而且速度也要慢得多,因为抛出和捕获异常的代价很高。 标准习惯用法(在