2011-08-19 124 views
3

如何將文件轉換爲二進制文件?我只需要它爲我的項目。我需要通過二進制文件加密文件。Java文件到二進制轉換

+3

文件已經是二進制數據。請提供更多信息。 –

+0

你是什麼意思將文件完全轉換爲二進制文件? –

+1

如果你的意思是文件到字節數組:http://www.exampledepot.com/egs/java.io/file2bytearray.html – jacop41

回答

13

如果你指的是訪問實際的二進制形式,然後讀取文件中的每一個字節轉換成二進制表示...

編輯:

下面是一些代碼的字節轉換成串位:

String getBits(byte b) 
{ 
    String result = ""; 
    for(int i = 0; i < 8; i++) 
     result += (b & (1 << i)) == 0 ? "0" : "1"; 
    return result; 
} 

如果你指的是訪問該字節的文件,然後簡單地使用下面的代碼(你可以使用這個對於第一種情況爲好):

File file = new File("filename.bin"); 
byte[] fileData = new byte[file.length()]; 
FileInputStream in = new FileInputStream(file); 
in.read(fileData): 
in.close(); 
// now fileData contains the bytes of the file 

要使用這些兩段代碼,您現在可以遍歷每一個字節,並創建一個位一個String對象(8X比原始文件大小!!大):

String content = ""; 
for(byte b : fileData) 
    content += getBits(b); 
// content now contains your bits. 
+0

感謝這一個。 –

+0

你認爲我可以扭轉它嗎?二進制表示到文件。 –

+0

請參閱http://stackoverflow.com/q/6981555/307767 – oliholz

0

隨着FileInputStream可以獲得從文件

字節從JavaDoc的:

一個FileInputStream獲得輸入從一個文件在文件系統 字節。哪些文件可用取決於主機環境。

FileInputStream用於讀取原始字節流,如 圖像數據。要閱讀字符流,請考慮使用 FileReader。

1
 try { 
      StringBuilder sb = new StringBuilder(); 
      File file = new File("C:/log.txt"); 
      DataInputStream input = new DataInputStream(new FileInputStream(file)); 
      try { 
       while(true) { 
        sb.append(Integer.toBinaryString(input.readByte())); 
       } 
      } catch(EOFException eof) { 
      } catch(IOException e) { 
       e.printStackTrace(); 
      } 
      System.out.println(sb.toString()); 
     } catch(FileNotFoundException e2) { 
      e2.printStackTrace(); 
     } 
+0

對於xml,只需更改爲log.xml –