Java 无法将二进制文件转换为文本

Java 无法将二进制文件转换为文本,java,Java,我必须将二进制数据转换成文本,我想我已经接近了,但有些东西工作不太正常。在本例中,输出应该是字母“FRI”,但我在字母周围有一堆其他符号: F2eÊ)R·I$I。 我不知道是什么问题。代码如下: public class DN06 { public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException { String location = "D:\\NetBe

我必须将二进制数据转换成文本,我想我已经接近了,但有些东西工作不太正常。在本例中,输出应该是字母“FRI”,但我在字母周围有一堆其他符号: F2eÊ)R·I$I。 我不知道是什么问题。代码如下:

public class DN06 {
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
    String location = "D:\\NetBeans\\Projects\\DN06\\src\\datoteka1.txt";
    File newFile = new File(location);
    Scanner sc = new Scanner(newFile);
    StringBuilder sb = new StringBuilder();
    String drek = "";
    try{
        while (sc.hasNext()){
            String content = new String(sc.next().getBytes(),"UTF-8");
            for (int i=0;i<=content.length()-8;i++){
                int charCode = Integer.parseInt(content.substring(i,i+8),2);
                drek += new Character((char)charCode).toString();
            }
            System.out.println(drek);
        }
    }catch( UnsupportedEncodingException e){
        System.out.println("Unsupported character set");
    }
}
公共类DN06{
公共静态void main(字符串[]args)引发FileNotFoundException、UnsupportedEncodingException{
String location=“D:\\NetBeans\\Projects\\DN06\\src\\datoteka1.txt”;
文件newFile=新文件(位置);
扫描仪sc=新扫描仪(新文件);
StringBuilder sb=新的StringBuilder();
字符串drek=“”;
试一试{
while(sc.hasNext()){
字符串内容=新字符串(sc.next().getBytes(),“UTF-8”);
对于(int i=0;i在直线上

String content = new String(sc.next().getBytes(),"UTF-8");
您已经有了所需的输出。在这里,您已经将得到的字节数组解析为编码为UTF-8的字符串。之后,您尝试再次将其解码为UTF-8,因此得到了错误的结果

编辑:

由于文件内容是用二进制编写的,这还不够,您必须对每个字节进行一次解析。for循环中的问题是,在二进制字符串中,i始终只移动一个数字,而不是向右移动8个数字

for (int i=0;i<=content.length()-8;i = i+8)

for(int i=0;i
新字符((char)charCode)
对我来说似乎可疑(此处未定义编码)。您能找到一种方法向我们显示您的输入文件吗?那会有帮助。可能会以十六进制格式转储它?尝试使用ByteArrayInputstream而不是基于
文本的输入流。该文件的扩展名为.txt,文件内容为:01000110010100100100100100100100100100100100100110。如果我只是尝试打印此字符串,输出为:010001100101001我需要将这些数据转换成文本形式。@Sebastjan啊,我知道了,你的文件是用二进制写的,我想文件中写的是“FRI”,我会设法弄清楚的