![](/img/trans.png)
[英]Write String with array as bytes to a file using DataOutputStream
[英]File Write : String to Bytes
我想將字符串/字符數據作為字節寫入文件中。我希望此轉換在IO。*類內部進行。 我不想在字符串上使用getBytes()方法。
我嘗試了以下兩個程序,但兩個程序都以Character形式寫入數據。 當我在記事本中打開文件時,我可以讀取這些字符。 如何將數據存儲為字節?
import IO.FileWrite;
import java.io.*;
public class CharToChar {
private final String data;
public CharToChar(String data){
this.data = data;
}
public static void main(String[] args) throws IOException {
final CharToChar charToChar = new CharToChar("I am Manish");
charToChar.write();
}
private void write() throws IOException {
final File file = new File("CharToChar.txt");
final FileWriter fileWriter = new FileWriter(file);
final BufferedWriter bufferdWriter = new BufferedWriter(fileWriter);
bufferdWriter.write(this.data);
bufferdWriter.close();
}
}
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteStringAsBytesToFile {
public static void main(String[] args) {
String strFilePath = "WriteStringAsBytes.txt";
try
{
//create FileOutputStream object
FileOutputStream fos = new FileOutputStream(strFilePath);
/*
* To create DataOutputStream object from FileOutputStream use,
* DataOutputStream(OutputStream os) constructor.
*
*/
DataOutputStream dos = new DataOutputStream(fos);
String str = "This string will be written to file as sequence of bytes!";
/*
* To write a string as a sequence of bytes to a file, use
* void writeBytes(String str) method of Java DataOutputStream class.
*
* This method writes string as a sequence of bytes to underlying output
* stream (Each character's high eight bits are discarded first).
*/
dos.writeBytes(str);
/*
* To close DataOutputStream use,
* void close() method.
*
*/
dos.close();
}
catch (IOException e)
{
System.out.println("IOException : " + e);
}
}
}
注意-> JAVA文檔說OutputStreamWriter OutputStreamWriter是從字符流到字節流的橋梁:*寫入字符的字符使用指定的字節編碼。
我認為您對於以字節/字符形式寫入有錯誤的觀念。 字符只是字節數據的表示。 該表示是根據字符編碼類型決定的。 看下面的代碼:
OutputStream os = new FileOutputStream(filePath);
os.write("This is byte date".getBytes("UTF-8"));
os.close();
如果您在運行上述代碼段后打開文件,則會在文件中注意到相同的字符串。 您的文件始終包含字節數據。 這些字節由您的文本編輯器讀取,並根據其默認字符編碼(通常為UTF-8,但並非始終如此)進行編碼。
不知道是否有任何Java IO類可以做到這一點,並且我看到您不想使用getBytes()
,但是如果您決定采用getBytes()
方式,則可以在您的代碼中修改write()
方法第一個例子是這樣的:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Arrays;
public class CharToChar {
private final String data;
public CharToChar(String data){
this.data = data;
}
private void write() throws IOException {
OutputStream fos = new FileOutputStream(new File("CharToChar.txt"));
fos.write(Arrays.toString(this.data.getBytes()).getBytes());
fos.close();
}
public static void main(String[] args) throws IOException {
final CharToChar charToChar = new CharToChar("I am Manish");
charToChar.write();
}
}
您的要求似乎很奇怪,因為您不希望使用toBytes
方法的工作來將String轉換為字節,但是您可以序列化任何Java Object(包括Strings),然后將其保存到File中,如下所示:
try ( ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream( "CharToChar.txt" ) ) ) {
// write any object to a file
oos.writeObject( "I am Manish" );
// another option, works for Strings and makes the String pretty much un-readable
oos.writeBytes( "hello world" );
} catch ( IOException e ) {
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.