【问题标题】:How can convert file with contents of string to the file with contents of byte?如何将内容为字符串的文件转换为内容为字节的文件?
【发布时间】:2014-11-21 18:43:57
【问题描述】:

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

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);
}
}

我输入文件的内容是:

San Francisco, officially the City and County of San Francisco, is the cultural center and a leading financial hub of the San Francisco Bay Area and Northern California. 
The only consolidated city-county in California

我希望输出(byteTest.txt)文件有类似

[B@2dda6444 

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

【问题讨论】:

  • 你所说的“文件的上下文”是什么意思——你是指文件的内容吗?如果是这样,文件是 always 字节序列......目前尚不清楚您实际想要实现的目标。此外,在不指定编码的情况下调用String.getBytes() 几乎总是一个坏主意。
  • @JonSkeet 我编辑我的解释。我的意思是内容。
  • 你想要 ascii 二进制字符串表示吗? IE。 c = "1100001", g = "1100111" 并将其打印到文件中?
  • 为什么您希望文件包含[B@2dda6444?这是在字节数组上调用toString() 的输出,但它并没有真正包含任何有用的信息……目前还不清楚你的最终目标是什么。
  • [B@2dda6444 只反映字符串(或字节数组)的位置而不是它的内容。

标签: java string file bytearray


【解决方案1】:

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

如果您的目标是压缩文件,那么现在您的文件是一个紧凑的文件,无需在其上运行实际的压缩算法。

【讨论】:

  • 我希望将文件的全部内容转换为byte[] 而不是字符串。我的意思是我希望文件内容为字节而不是字符串。
  • 一个文件只是一个字节序列。文件没有类型,如 C#、Java 等中的对象类型。在记事本中打开计算机上的二进制文件(.dll 可以使用)。记事本将显示一串无意义的字符 - 因为它试图将字节解释为字符。但实际上它是二进制数据,而不是字符串数据。
  • @user3487667:我认为您从根本上误解了文件包含的内容。它只是一个字节序列。如果您以这种方式解释,它只是一个字符串。
  • @ Mentok 和 @Jon Skeet 谢谢我现在不知道了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2015-02-08
  • 1970-01-01
  • 2017-06-27
相关资源
最近更新 更多