簡體   English   中英

使用PrintWriter和DataOutputStream在Java中寫入同一文件

[英]Using PrintWriter and DataOutputStream to write in same file in java

我必須同時編寫PrintWriterDataOutputStream才能將數據打印到我的文件中。 PrintWriter是越來越此前打印比DataOutputStream雖然談到后DataOutputStream中的代碼。

部分代碼:

import java.io.*;
import java.util.*;
public class file {
    public static void main(String[] args) {
        DataOutputStream dos=null;
        PrintWriter pw=null;
        try {
            File f=new File("file.txt");
            dos=new DataOutputStream(new FileOutputStream(f));
            pw=new PrintWriter(f);
            Scanner b=new Scanner(System.in);

            for(int i=0;i<=4;i++) {
                int h=b.nextInt();
                b.nextLine();
                dos.writeInt(h);
                String s=b.nextLine();
                int l=s.length();
                dos.writeBytes(s);
                pw.println();
            }
        } catch(IOException e) {
            e.printStackTrace();
        } finally {
            if(dos!=null)
                try {
                    dos.close();
                } catch(IOException e) {
                    e.printStackTrace();
                }

            pw.flush();
        }
    }
}

首先打印來自pw的新行,然后打印來自dos.write();數據dos.write(); 如何避免這種情況? 並使其井然有序?

切勿將WriterOutputStream混合使用,因為它們有不同的用途,實際上是Writer用於生成文本文件(人類可讀),而OutputStream用於生成二進制文件(人類不可讀) ,請根據您的要求僅使用其中之一。

假設您決定只使用DataOutputStream只需用dos.write(System.lineSeparator().getBytes(StandardCharsets.US_ASCII))類的東西替換pw.println() dos.write(System.lineSeparator().getBytes(StandardCharsets.US_ASCII))即可將行分隔符與OutputStream寫入文件中。 但是請注意,在二進制文件中,添加行分隔符實際上沒有任何意義,因為該文件並不意味着人類可以讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM