⑴ java里怎樣把文件轉換成二進制
轉換文件成為二進制數據並保存的Java代碼:
取出數據並還原文件到本地的java代碼:
[java]view plain//讀取資料庫二進制文件
publicvoidreaderJpg()throwsSQLException
{
connection=connectionManager.getconn();//自己連接自己的資料庫
StringsqlString="selectimagesfromsave_imagewhereid=4";//從資料庫中讀出要還原文件的二進制碼,這里我讀的是自己的資料庫id為4的文件
Filefile=newFile("E:\1.jpg");//本地生成的文件
if(!file.exists())
{
try{
file.createNewFile();
}catch(Exceptione){
e.printStackTrace();
}
}
try{
byte[]Buffer=newbyte[4096*5];
statement=connection.prepareStatement(sqlString);
resultSet=statement.executeQuery();
if(resultSet.next())
{
FileOutputStreamoutputStream=newFileOutputStream(file);
InputStreamiStream=resultSet.getBinaryStream("images");//去欄位用getBinaryStream()
intsize=0;
while((size=iStream.read(Buffer))!=-1)
{
System.out.println(size);
outputStream.write(Buffer,0,size);
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
⑵ .class後綴的文件
.class文件是編程過程中編譯Java代碼後生成的二進制代碼文件。這類文件對於Java語言的運行至關重要,因為所有在Java虛擬機上運行的代碼都需要以二進制形式存在。.class文件包含了編譯後的Java位元組碼,這是一種平台無關的中間代碼,可以被任何安裝了Java虛擬機的系統執行。
在Java編程流程中,程序員首先使用Java編譯器將源代碼文件(.java格式)編譯成.class文件。編譯過程將Java源代碼轉換為機器獨立的位元組碼,這個過程確保了Java程序可以在任何安裝了Java虛擬機的平台上運行,無需重新編譯。.class文件通常與同名的Java源文件相對應,例如一個名為MyClass.java的源文件編譯後會生成一個名為MyClass.class的二進制代碼文件。
編譯後的.class文件中包含了類或介面的結構信息,包括方法和欄位的定義、方法的具體實現以及其他元數據。這些信息使得Java虛擬機能夠正確地載入、驗證和執行這些類或介面。因此,.class文件是Java程序的核心,是Java語言跨平台特性的關鍵實現。
在實際應用中,.class文件被廣泛用於各種Java程序開發場景,包括企業級應用、桌面應用程序、移動應用以及小型腳本等。此外,.class文件也可以通過反編譯工具進行逆向工程,雖然這通常不建議在非授權情況下進行,但在某些特定場景中,例如代碼審查或學習目的,它是有用的。
需要注意的是,盡管.class文件在Java程序中扮演著重要角色,但它並不是唯一的二進制代碼文件格式。例如,其他編程語言如C或C++也會生成類似形式的二進制文件,但這些文件通常需要特定的編譯器和運行時環境。相比之下,Java虛擬機提供了一個統一的運行環境,使得.class文件成為跨平台編程的理想選擇。
⑶ java 如何將二進制數據流轉換成字元串並保存
private static String bytesToString(String filename) {
String myreadline = "";
try {
// 創建FileReader對象,用來讀取字元流
FileReader fr = new FileReader("userinfo.txt");
// 緩沖指定文件的輸入
BufferedReader br = new BufferedReader(fr);
// 定義一個String類型的變數,用來每次讀取一行
while (br.ready()) {
// 讀取一行
myreadline = myreadline + (myreadline.equals("")?"":"\n") + br.readLine();
// 在屏幕上輸出
System.out.println(myreadline);
}
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
return myreadline;
}
public static void writerFile(String fileString, String filePath) {
FileWriter fw;
try {
fw = new FileWriter(filePath);
// 將緩沖對文件的輸出
BufferedWriter bw = new BufferedWriter(fw);
bw.write(fileString);
bw.flush();
bw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws FileNotFoundException,
Exception {
// TODO Auto-generated method stub
String fileString = bytesToString("D:/workspace/TestStruts2/userinfo.txt");
writerFile(fileString,"D:/workspace/TestStruts2/test.txt");
}
⑷ 緊急求助!!!JAVA語言下如何將二進制數字寫入文件然後讀出來
/** * 二進制讀寫文件 */ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainClass { /** * java.io包中的OutputStream及其子類專門用於寫二進制數據。 * FileOutputStream是其子類,可用於將二進制數據寫入文件。 * DataOutputStream是OutputStream的另一個子類,它可以 * 連接到一個FileOutputStream上,便於寫各種基本數據類型的數據。 */ public void writeMethod1() { String fileName="c:/kuka1.dat"; int value0=255; int value1=0; int value2=-1; try { //將DataOutputStream與FileOutputStream連接可輸出不同類型的數據 //FileOutputStream類的構造函數負責打開文件kuka.dat,如果文件不存在, //則創建一個新的文件,如果文件已存在則用新創建的文件代替。然後FileOutputStream //類的對象與一個DataOutputStream對象連接,DataOutputStream類具有寫 //各種數據類型的方法。 DataOutputStream out=new DataOutputStream(new FileOutputStream(fileName)); out.writeInt(value0); out.writeInt(value1); out.writeInt(value2); out.close(); } catch (Exception e) { e.printStackTrace(); } } //對於大量數據的寫入,使用緩沖流BufferedOutputStream類可以提高效率 public void writeMethod2() { String fileName="c:/kuka2.txt"; try { DataOutputStream out=new DataOutputStream( new BufferedOutputStream( new FileOutputStream(fileName))); out.writeInt(10); System.out.println(out.size()+" bytes have been written."); out.writeDouble(31.2); System.out.println(out.size()+" bytes have been written."); out.writeBytes("JAVA"); System.out.println(out.size()+" bytes have been written."); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 對二進制文件比較常見的類有FileInputStream,DataInputStream * BufferedInputStream等。類似於DataOutputStream,DataInputStream * 也提供了很多方法用於讀入布爾型、位元組、字元、整形、長整形、短整形、 * 單精度、雙精度等數據。 */ public void readMethod1() { String fileName="c:/kuka1.dat"; int sum=0; try { DataInputStream in=new DataInputStream( new BufferedInputStream( new FileInputStream(fileName))); sum+=in.readInt(); sum+=in.readInt(); sum+=in.readInt(); System.out.println("The sum is:"+sum); in.close(); } catch (Exception e) { e.printStackTrace(); } } public void readMethod2() { try { FileInputStream stream=new FileInputStream("c:/kuka.dat"); int c; while((c=stream.read())!=-1) { System.out.println(c); } } catch (Exception e) { e.printStackTrace(); } } }
暈噢,格式全亂了~~
⑸ java中二進制怎麼表示
二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。
1、Java中定義兩個數,然後分別列印出它們的二進製表示:
System.out.println("Java二進制7: "+Integer.toBinaryString(7));
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
輸出:
Java二進制7:
111
Java二進制-7:
可以看到Java中對於數的表示屬於有符號的,那麼這個是怎麼來的?
7好辦,直接是111
-7轉化二進制的過程:
(1)把-7轉化成7,二進制是
111
(2)Java中對於不滿32位的int二進制自動補齊,所以變成了
(29個0)111
(3)然後取反
(29個1)000
(4)然後加1
(29個1)001
這就是-7的整個轉化過程,那麼現在有一個問題,如果有一個文本文件,每一行有八位二進制,表示的范圍是(0~255),也就是用一個位元組表示的無符號整數,如果現在要把這些二進制轉化成整數存到文件里應該怎麼做?
文件:
line1
11111110
(254)
line2
00000000
(0)
假設用Java讀進了第一行,那麼直接列印出來的值是-2,不符合要求,這時讓-2變254有兩種辦法:
(1)用Java自帶的方法,Byte.toUnsignedInt((byte)
-2)(ps.-2的二進製表示就是line1),這樣列印出來的就是254了
System.out.println(Byte.toUnsignedInt((byte) -2));
輸出:254
第二種方法的原理:
Java中-2的二進製表示:(這個二進制的後八位就是line1,可以直接列印的話Java把其當做了負數
-2)
Java中255的二進製表示:(24個『0』,8個『1』)
做與後變為:
這樣做與後表示的數就是正數了
254。可以想一下,假設每一行用2個位元組表示一個無符號數,那麼可以把每一行變成正整數用方法2怎麼做?
2.Java中的>>和>>>
'>>'
算術右移,向右移左邊補符號位
'>>>'
邏輯右移,向右移左邊補0
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
System.out.println("-7>>2: "+Integer.toBinaryString(-7>>2));
System.out.println("-7>>>2: "+Integer.toBinaryString(-7>>>2));輸出:
Java二進制-7:
-7>>2:
-7>>>2: //正常應該這樣(00)左邊的兩個0不顯示