在Java控制台上打印.dat的正确方法是什么?

时间:2011-04-06 12:26:19

标签: java fileinputstream fileoutputstream

在Java控制台上打印.dat的正确方法是什么?

public void open(){
    try {
        FileInputStream inFile =
            new FileInputStream("C:"+File.separatorChar+"transactions.dat");
        ObjectInputStream in = new ObjectInputStream(inFile);
        //While (in.readLine!=null){
            System.out.print(in.readLine());}
        in.close();
    } catch (FileNotFoundException ex) {
        System.out.println(ex);
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally{  }
}

这仅给出一行的结果,并且字符具有不同的大小 如何读取所有数据并使用可读输出打印到控制台上!

当我在这个dat文件中写入原文时,我使用

FileOutputStream outFile =
    new FileOutputStream("C:"+File.separatorChar+"transactions.dat");
ObjectOutputStream out = new ObjectOutputStream(outFile);
out.writeChars(brokerageAcc1.toString());

3 个答案:

答案 0 :(得分:0)

FileInputStream fis = new FileInputStream("C:"+File.separatorChar+"transactions.dat");
BufferedReader br=new BufferedReader(new InputStreamReader(fis));
String s;
while ((s=br.readline())!=null)
    System.out.println(s);

答案 1 :(得分:0)

如果这是你正在编写和阅读的文本,那么你应该使用Writer和Reader类,用BufferedWriter和BufferedReader包装来提供行处理。

FileOutputStream outFile =
    new FileOutputStream("C:"+File.separatorChar+"transactions.dat");
BufferedWriter writer = new BufferedWriter(new Writer(outFile));
writer.write(Acc1.toString());
// maybe write a newline??
writer.newLine();

然后使用缓冲读卡器将其读回来:

FileInputStream inFile =
    new FileInputStream("C:"+File.separatorChar+"transactions.dat");
BufferedReader reader = new BufferedReader(new InputStreamReader(inFile));
while (true) {
    String line = reader.readline();
    if (line == null) break;
    System.out.println(line);
}

答案 2 :(得分:0)

如果控制台上的字符大小不同,则控制台本身配置为显示带有比例字体的文本。这必须在控制台上进行调整,无法通过Java应用程序进行控制。

您正在写信ObjectOutputStream。这有点奇怪,但您可能需要这个。要从这样的文件中读取,请使用以下代码(注意:我稍微改变了您的写入算法!不包括流关闭和异常处理)

// writing

FileOutputStream outFile = new FileOutputStream("C:"+File.separatorChar+"transactions.dat");
ObjectOutputStream out = new ObjectOutputStream(outFile);

String s = brokerageAcc1.toString();
out.writeInt(s.length());
System.out.println(s.length());

out.writeChars(s);

// reading

FileInputStream inFile = new FileInputStream("C:"+File.separatorChar+"transactions.dat");
ObjectInputStream in = new ObjectInputStream(inFile);
int length = in.readInt();     // get the number of chars
System.out.println(""+length);
StringBuilder result = new StringBuilder();
for (int i = 0; i < length; i++)
  result.append(in.readChar());
System.out.println(result.toString());
相关问题