2011-04-06 90 views
0

什么是在Java控制台上打印.dat的正确方法?什么是在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()); 

回答

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); 
+0

了解更多关于Reader和Writer来自java.io,它可以帮助您应对字符串输入和输出 – stemm 2011-04-06 12:43:24

0

如果是这样的文字,你是写作和阅读,那么你应该使用的作者和读者类,包裹着的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); 
} 
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()); 
+0

result.append(in.readChar());该行在java.io.DataInputStream.readChar(Unknown Source)处给出异常java.io.EOFException java.io.ObjectInputStream $ BlockDataInputStream.readChar(未知源)在java.io.ObjectInputStream.readChar(未知源) – jenifer 2011-04-06 17:42:01

+0

@Jenifer - 你是否改变了“写作”部分?我已经添加了两个“调试”行,请检查,两行显示的是相同的值。 EOF不应该发生。 – 2011-04-07 06:09:52

+0

@Jenifer - 做了一个更改 - 有一个机会,brokerageAcc1.toString()在读取长度和字符串之间发生变化。将它存储到一个变量中。 – 2011-04-07 06:12:52