Java 如何将内容为字符串的文件转换为内容为字节的文件?

Java 如何将内容为字符串的文件转换为内容为字节的文件?,java,string,file,bytearray,Java,String,File,Bytearray,我编写了以下代码来将字符串文件转换为字节数据文件,但输入文件和输出文件是相同的。我的代码有什么问题 import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java

我编写了以下代码来将字符串文件转换为字节数据文件,但输入文件和输出文件是相同的。我的代码有什么问题

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Iterator;
import java.util.stream.Stream;


public class StringToBytes {


 private static void convertor(Stream<String> input) throws IOException
 {

     File file = new File("byteTest.txt");
        BufferedOutputStream writer = new BufferedOutputStream(new FileOutputStream(file));

    Iterator<String> it= input.iterator();

    while (it.hasNext())
    {
        byte []b= it.next().getBytes();
        writer.write(b);

    }
    writer.close();
}

public static void main(String args[]) throws IOException{
    Path path= Paths.get("test.txt");

    Stream<String>lines=Files.lines(path, StandardCharsets.UTF_8);
    convertor(lines);
}
}
我希望输出(byteTest.txt)文件有如下内容

[B@2dda6444 

相反,输出文件的内容与输入文件相同。

您实际上是在复制文件的内容……您得到的是复制/粘贴文件时通常会得到的内容(每个ASCII字符都是一个字节)


如果您的目标是压缩文件,那么现在您的文件是一个尽可能紧密的压缩文件,没有在其上运行实际的压缩算法。

您所说的“文件上下文”是什么意思?您是指文件的内容吗?如果是这样,文件总是字节序列。。。现在还不清楚你到底想要实现什么。此外,在不指定编码的情况下调用
String.getBytes()
几乎总是一个坏主意。@JonSkeet我编辑我的解释。我指的是内容。你想要ascii二进制字符串表示法吗?例如c=“1100001”,g=“1100111”并将其打印到文件中?为什么您希望该文件包含
[B@2dda6444
?这是在字节数组上调用
toString()
的输出,但它实际上并不包含任何有用的信息……我们仍然不清楚您的最终目标是什么[B@2dda6444仅反映字符串的(或字节数组的)位置不是它的内容。我希望文件的全部内容转换为
byte[]
,而不是字符串。我的意思是我希望文件的内容是byte而不是string。文件只是一个字节序列。文件没有类型,就像C#、Java等中的对象类型。在记事本中打开计算机上的二进制文件(.dll将起作用).Notepad将显示一串无意义的字符-因为它试图将字节解释为字符。但实际上它是二进制数据,而不是字符串数据。@user3487667:再次,我认为您从根本上误解了文件所包含的内容。它只是一个字节序列。如果您这样解释它,它只是一个字符串。@Mentok和@Jon Skeet T谢谢你,我现在明白了。
[B@2dda6444