2014-11-21 33 views
-2

我写了下面的代码把字符串文件转换为字节数据文件,但是输入文件和输出文件是一样的。我的代码有什么问题。如何将带有字符串内容的文件转换为带有字节内容的文件?

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)文件具有输出文件的财产以后像

[[email protected] 

,而不是内容与输入文件相同。

+1

你是什么意思的“文件的上下文” - 你的意思是文件的*内容*?如果是这样,文件总是*字节序列......目前还不清楚你实际要实现的目标。此外,在不指定编码的情况下调用'String.getBytes()'几乎总是一个坏主意。 – 2014-11-21 18:47:17

+0

@ JonSkeet我编辑我的解释。我的意思是内容。 – user3487667 2014-11-21 19:07:54

+0

你想要ascii二进制字符串表示吗?即c =“1100001”,g =“1100111”并将其打印到文件中? – Martin 2014-11-21 19:08:14

回答

0

你基本上是复制文件的内容......你在说什么,如果你复制你通常会得到/粘贴的文件(每个ASCII字符是一个字节)

如果你的目的是压缩该文件,现在你的文件是紧凑的,因为它可以,没有一个实际的压缩算法运行。

+0

我希望文件的全部内容转换为'byte []'而不是string.I的意思是我想要文件的内容不是字节。 – user3487667 2014-11-21 19:10:31

+1

文件只是一个字节序列。文件没有类型,就像C#,Java等中的对象类型一样。在记事本中打开机器上的二进制文件(.dll会工作)。记事本将显示一串无意义的字符 - 因为它试图将字节解释为字符。但真的是它的二进制数据,不是字符串数据。 – Mentok 2014-11-21 19:13:08

+1

@ user3487667:同样,我认为你从根本上误解了一个文件包含的内容。这只是一个字节序列。这只是一个字符串,如果你*这样解释*。 – 2014-11-21 19:14:35

相关问题