Я хочу написать строку/данные Char как байты в файле. Мне нужно, чтобы это преобразование происходило внутри класса IO. *. Я не хочу использовать метод getBytes() для строки.File Write: String to Bytes
Я пробовал следующие две программы, но оба записывают данные как символ. И когда я открываю файл в блокноте, я могу прочитать эти символы. Как я могу хранить свои данные в виде байтов?
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 Docs говорит OutputStreamWriter OutputStreamWriter является мостом от символьных потоков до потоков байтов: * Символы, записанные на нем кодируются в байты, используя заданный.
Что такое OutputStreamWriter и InputStreamReader? Я прочитал эти классы, которые используются как адаптеры для Char to Byte. – HakunaMatata
OutputStreamWriter используется для записи символов в поток с использованием определенной кодировки символов. То же самое для InputStreamReader, но для чтения ... ObjectOutputStream (который я использовал выше) не заботится о кодировании, см. Http://docs.oracle.com/javase/1.4.2/docs/api/java/io/DataOutput .html # writeByte (int) для того, как символы преобразуются в байты. Вы просто используете подкласс класса DataInput для чтения символов, написанных с помощью DataOutput. – Renato