簡體   English   中英

DataOutputStream只寫一個字符串Java

[英]DataOutputStream only writes a string Java

DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("myfile.txt"));
dataOut.writeUTF("HEY");   // write HEY
dataOut.writeShort(1);     // writes nothing

我正在嘗試使用DataOutputStream在我的文本文件中寫一些東西。 但是,它只寫一個字符串,而不是整數或短整數。 我不明白為什么它只寫字符串。 請幫忙。

注意:盡管調用了文件myfile.txt ,但它是二進制文件而不是文本格式,因此您不能期望將其讀取為文本,例如使用文本編輯器並看到簡短的值。

如果您關閉文件並以與寫入文件相同的方式讀取文件,則此方法可以正常工作。

try (DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("myfile.txt"))) {
    dataOut.writeUTF("HEY");   // write HEY
    dataOut.writeShort(1);
}
try (DataInputStream dataIn = new DataInputStream(new FileInputStream("myfile.txt"))) {
    System.out.println("string: " + dataIn.readUTF());
    System.out.println("short: " + dataIn.readShort());
}

版畫

string: HEY
short: 1

您最有可能希望文件為文本。

try (PrintWriter dataOut = new PrintWriter(new FileOutputStream("myfile.txt"))) {
    dataOut.println("HEY");   // write HEY
    dataOut.println(1);
}
try (Scanner dataIn = new Scanner(new FileInputStream("myfile.txt"))) {
    System.out.println("string: " + dataIn.nextLine());
    System.out.println("short: " + dataIn.nextShort());
}

版畫

string: HEY
short: 1

並且文件包含

HEY
1

您沒有為您的主張提供任何證據。 writeUTF()writeInt()都不產生文本。 它們都產生二進制數據。 您不應嘗試將此數據保存在擴展名為.txt的文件中(也不應嘗試使用文本編輯器讀取數據)。 讀取此數據的唯一方法是使用DataInputStream

暫無
暫無

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

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