如何将文件转换为二进制文件?我只需要它用于我的项目。我需要通过二进制文件加密文件。
答案 0 :(得分:13)
如果你指的是访问ACTUAL BINARY表格,那么读入文件并将每个字节转换为二进制表示......
编辑:
这里有一些代码可以将字节转换为带有位的字符串:
String getBits(byte b)
{
String result = "";
for(int i = 0; i < 8; i++)
result += (b & (1 << i)) == 0 ? "0" : "1";
return result;
}
如果您指的是访问文件中的字节,那么只需使用以下代码(您也可以将其用于第一种情况):
File file = new File("filename.bin");
byte[] fileData = new byte[file.length()];
FileInputStream in = new FileInputStream(file);
in.read(fileData):
in.close();
// now fileData contains the bytes of the file
要使用这两段代码,您现在可以遍历每个字节并使用位创建一个String对象(比原始文件大小大8倍!!):
String content = "";
for(byte b : fileData)
content += getBits(b);
// content now contains your bits.
答案 1 :(得分:0)
使用FileInputStream,您可以从文件中获取字节
来自JavaDoc:
FileInputStream从文件中的文件获取输入字节 系统。可用的文件取决于主机环境。
FileInputStream用于读取原始字节流,例如 图像数据。要读取字符流,请考虑使用 的FileReader。
答案 2 :(得分:0)
try {
StringBuilder sb = new StringBuilder();
File file = new File("C:/log.txt");
DataInputStream input = new DataInputStream( new FileInputStream( file ) );
try {
while( true ) {
sb.append( Integer.toBinaryString( input.readByte() ) );
}
} catch( EOFException eof ) {
} catch( IOException e ) {
e.printStackTrace();
}
System.out.println(sb.toString());
} catch( FileNotFoundException e2 ) {
e2.printStackTrace();
}
答案 3 :(得分:0)
用于编码/解码的简单说明代码:
要编码:
// Encode Character | char
Integer.toBinaryString(myByte);
// Encode Byte | byte
Integer.toBinaryString(myCharacter);
要解码:
// Use BigInteger insted of Integer beacause it can decode large binary code(2)
new BigInteger(data, 2).toByteArray()
编码文件:
private static void encodeToBinary(File inputPath, File outputPath) throws IOException {
// Read all the bytes from the input file
InputStream inputData = new FileInputStream(inputPath);
ByteArrayOutputStream fileData = new ByteArrayOutputStream();
inputData.transferTo(fileData);
// StringJoiner to store binary code(2) encoded
StringJoiner binaryData = new StringJoiner(" ");
// Convert every byte into binaryString
for(Byte data : fileData.toByteArray()) {
binaryData.add(Integer.toBinaryString(data));
}
// (File)OutputStream for writing binary code(2)
OutputStream outputData = new FileOutputStream(outputPath);
outputData.write(binaryData.toString().getBytes());
// [IMPORTANT] Close all the streams
fileData.close();
outputData.close();
inputData.close();
}
解码文件:
private static void decodeToFile(File inputPath, File outputPath) throws IOException {
// -->>Just reverse the process
// Read all the bytes from the input (binary code(2)) file to string
InputStream inputData = new FileInputStream(inputPath);
ByteArrayOutputStream fileData = new ByteArrayOutputStream();
inputData.transferTo(fileData);
// ByteArrayOutputStream to store bytes decoded
ByteArrayOutputStream originalBytes = new ByteArrayOutputStream();
// Convert every binary code(2) to original byte(s)
for(String data : new String(fileData.toByteArray()).split(" ")) {
originalBytes.write(new BigInteger(data, 2).toByteArray());
}
// (File)OutputStream for writing decoded bytes
OutputStream outputData = new FileOutputStream(outputPath);
outputData.write(originalBytes.toByteArray());
// [IMPORTANT] Close all the streams
inputData.close();
fileData.close();
originalBytes.close();
outputData.close();
}