在Java控制台上打印.dat的正确方法是什么?
在Java控制台上打印.dat的正确方法是什么在Java控制台上打印.dat的正确方法是什么?,java,fileinputstream,fileoutputstream,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.read
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());
如果这是您正在编写和读取的文本,那么您应该使用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);
}
如果控制台上的字符大小不同,则控制台本身配置为以比例字体显示文本。这必须在控制台上进行调整,不能从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());
阅读java.io中关于读写器的更多信息,它可以帮助您处理字符串输入和输出结果。appendin.readChar;此行给出java.io.DataInputStream.readCharUnknown源处java.io.ObjectInputStream$BlockDataInputStream.readCharUnknown源处java.io.EOFEException异常java.io.ObjectInputStream.readCharUnknownSource@Jenifer-你改变了写作部分了吗?我又添加了两行调试代码,请检查,这两行打印的值是否相同。EOF不应该发生。@Jenifer-又做了一个更改-有可能brokerageAcc1.toString在读取长度和字符串之间发生更改。将其存储到变量中。
// 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());