文本到二进制转换和写入文件。请帮忙

时间:2013-02-22 04:01:28

标签: java file binary

我正在尝试将纯文本数据转换为二进制格式,以使其变为不可红色。 需要将数据写入文件。如果我在控制台窗口中打印它,并且无法读取原始文本,则转换有效。 但是,当它写入文件时,会出现相同的原始文本。 如何将这个二进制数据写入文件,而不加密,但使其不可读?

此文件稍后需要由另一个接受二进制数据的第三方工具处理。这就是为什么我不能用我自己的算法加密它。

这是我的代码:

import java.io.*;
import java.lang.*;
public class convert{
public static void main( String args[] ){
String s= "This is text";
try{
File file= new File("test.php");
file.createNewFile();
FileWriter fw= new FileWriter( file.getName(), true );
BufferedWriter bw= new BufferedWriter( fw );

byte[] b= s.getBytes();
for(int x=0; x<b.length; x++){
byte c=b[x];
bw.write( c );
System.out.println(c);
}

bw.close();
}catch( Exception e ){ e.printStackTrace(); }
}//main
}//class

2 个答案:

答案 0 :(得分:1)

纯文本本身就是一种二进制格式,其中每个字节都被解释为一个字符(或其他变体,取决于假定或指定的编码,例如UTF-8,UTF-16 ......)。

这意味着如果您将ASCII字符作为字节写入文件,它将看起来相同并且任何人都可以读取。事实上,许多二进制文件格式仍然将字符串保存为普通字节,这意味着在十六进制编辑器中打开时可以读取它们,例如: hex editor

要使其不可读,您需要做的是将其序列化为一些不可读的常见格式。遗憾的是,Java中的正常序列化是可读的,但您可以查看here以获取有关如何隐藏它的建议。您也可以使用ZIP或类似的压缩算法。

另一种更黑客的方法是将所有字符字节移动一些已知值。这将导致他们成为一个不同的角色,这将是不可读的。这可以看作是一个非常基本的Caesar Chipher

但最终,重要的是目标程序能够阅读的格式。

答案 1 :(得分:0)

你可以使用RandomAccessFile。它变得容易。

RandomAccessFile raf = new RandomAccessFile(path,permissions); //permissions are r,w,rw. The usual ones.
raf.seek(0); //this will set the pointer to first position.
raf.writeUTF(what ever you want to write to file);

//to read the file use readUTF()
raf.seek(0); //you can read from a part of file using this seek method.
System.out.println(raf.readUTF());