バイトをテキストとして保存しないだけです。一度もない!0x00 はファイルに 1 バイトとして、または文字列として書き込むことができるため、この場合 (16 進数) は 4 倍のスペースを占有します。これを行う必要がある場合は、この決定がどれほどひどいものになるかについて話し合ってください! ただし、合理的な理由を提供できる場合は、回答を
編集します。
次の場合は、実際のテキストとしてのみ保存します。
- 簡単です(そうではありません)
- それは価値を追加します(ファイルサイズが4(スペース数)を超えて増加すると価値が追加される場合、はい)
- ユーザーがファイルを編集できるようにする必要がある場合 (「0x」を省略します...)
次のようにバイトを書き込むことができます。
public static void writeBytes(byte[] in, File file, boolean append) throws IOException {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file, append);
fos.write(in);
} finally {
if (fos != null)
fos.close();
}
}
次のように読みます。
public static byte[] readBytes(File file) throws IOException {
return readBytes(file, (int) file.length());
}
public static byte[] readBytes(File file, int length) throws IOException {
byte[] content = new byte[length];
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
while (length > 0)
length -= fis.read(content);
} finally {
if (fis != null)
fis.close();
}
return content;
}
したがって、次のようになります。
public static void writeString(String in, File file, String charset, boolean append)
throws IOException {
writeBytes(in.getBytes(charset), file, append);
}
public static String readString(File file, String charset) throws IOException {
return new String(readBytes(file), charset);
}
文字列を読み書きする。
Android の現在の Java ソース レベルが低すぎるため、try-with-resource コンストラクトを使用していないことに注意してください。:(