2014-11-21 58 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

相關問題