導航:首頁 > 編程語言 > java打開二進制文件怎麼打開文件

java打開二進制文件怎麼打開文件

發布時間:2023-03-21 01:45:04

『壹』 java中讀取文件(二進制,字元)內容的幾種方

JAVA中讀取文件內容的方法有很多,比如按位元組讀取文件內容,按字元讀取文件內容,按行讀取文件內容,隨機讀取文件內容等方法,本文就以上方法的具體實現給出代碼,需要的可以直接復制使用

public class ReadFromFile {
/**
* 以位元組為單位讀取文件,常用於讀二進制文件,如圖片、聲音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以位元組為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個位元組
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println("以位元組為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個位元組
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 讀入多個位元組到位元組數組中,byteread為一次讀入的位元組數
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}

/**
* 以字元為單位讀取文件,常用於讀文本,數字等類型的文件
*/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
System.out.println("以字元為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個字元
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// 對於windows下,\r\n這兩個字元在一起時,表示一個換行。
// 但如果這兩個字元分開顯示時,會換兩次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。
if (((char) tempchar) != '\r') {
System.out.print((char) tempchar);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("以字元為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個字元
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 讀入多個字元到字元數組中,charread為一次讀取字元數
while ((charread = reader.read(tempchars)) != -1) {
// 同樣屏蔽掉\r不顯示
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != '\r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}

} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}

/**
* 以行為單位讀取文件,常用於讀面向行的格式化文件
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行為單位讀取文件內容,一次讀一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null為文件結束
while ((tempString = reader.readLine()) != null) {
// 顯示行號
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}

/**
* 隨機讀取文件內容
*/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
System.out.println("隨機讀取一段文件內容:");
// 打開一個隨機訪問文件流,按只讀方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件長度,位元組數
long fileLength = randomFile.length();
// 讀文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 將讀文件的開始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次讀10個位元組,如果文件內容不足10個位元組,則讀剩下的位元組。
// 將一次讀取的位元組數賦給byteread
while ((byteread = randomFile.read(bytes)) != -1) {
System.out.write(bytes, 0, byteread);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (randomFile != null) {
try {
randomFile.close();
} catch (IOException e1) {
}
}
}
}

/**
* 顯示輸入流中還剩的位元組數
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("當前位元組輸入流中的位元組數為:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}

『貳』 請教,怎麼用JAVA來讀取二進制文件並輸出文件內容

Java讀取二進制文件,以位元組為單位進行讀取,還可讀取圖片、音樂文件、視頻文件等,
在Java中,提供了四種類來對文件進行操作,分別是InputStream OutputStream Reader Writer ,前兩種是對位元組流的操作,後兩種則是對字元流的操作。
示例代碼如下:
public static void readFileByBytes(String fileName){
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("一次讀一個");
// 一次讀一個位元組
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}

『叄』 java讀取二進制文件

思路:按照位元組讀取文件到緩沖,然後對文件內容進行處理。

代碼如下:


publicstaticvoidreadFile()throwsIOException{
RandomAccessFilef=newRandomAccessFile("test.txt","r");
byte[]b=newbyte[(int)f.length()];
//將文件按照位元組方式讀入到位元組緩存中
f.read(b);
//將位元組轉換為utf-8格式的字元串
Stringinput=newString(b,"utf-8");
//可以匹配到所有的數字
Patternpattern=Pattern.compile("\d+(\.\d+)?");
Matchermatch=pattern.matcher(input);
while(match.find()){
//match.group(0)即為你想獲取的數據
System.out.println(match.group(0));
}
f.close();
}

『肆』 java 問題:怎樣把一個bin二進制圖片文件用java代碼打開求解!

Java中可以用java.awt.Toolkit類打開gif,jpg,png三種類型的二進制圖片文件,如果是其它類型的圖片,需要轉成上述格式的圖片才行。

我給你一個例子你看看吧。

importjava.awt.Frame;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.Toolkit;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

{

=1L;

Imageim;

//構造函數

publicLoadFromAppli(){

//根據地址裝入圖片

im=Toolkit.getDefaultToolkit().getImage("bg.png");//bg.png處寫你的圖片的絕對或相對廳芹銷路徑

//關閉窗口

addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

扮游}

//在Frame上顯示圖片

publicvoidpaint(Graphicsg){

g.drawImage(im,0,0,this);

}

首指publicstaticvoidmain(String[]args){

LoadFromApplif=newLoadFromAppli();

f.setSize(200,200);

f.setVisible(true);

}

}

『伍』 用C++寫的二進制文件,用JAVA怎麼讀取

用FileInputStream讀取文件,然後BufferedInputStream來裝流,最後用read方法讀出位元組數組用<<位移運算組合輕松完成你要的變數讀取,short2位元組,int4位元組,long 8字缺陪節,相信你應該返扮絕知道怎麼做了,記得文件中的存儲的位元組是漏姿高低位反向的

『陸』 java如何將一個EXCEL文件作為二進制文件存入資料庫,再把它讀取打開

在資料庫設一個BLOB類型的欄位,然後把Excel文件保存進去.
其實保存什麼文件都可以.不一定要Excel的.
這方法通用,隨便在網路輸入"java blob"就可以找到很多方法了.

『柒』 緊急求助!!!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 怎麼用網頁直接打開資料庫中讀出的二進制 word excel

用Applet或者禪輪Swing等等都可以:得用OpenOffice和它的SDK,
http://hi..com/lw21/blog/item/0be216ad00f8f2174b36d628.html
這是我寫的一個小小的Demo
OpenOffice的UNO的API里賀歷信有專門對於文件流的操作,它可以專門解爛輪析word,excel,pdf,ppt,rtf等等的文件流。不管是從資料庫讀出來的流,還是從http過來的流都可以解析。
你運行一下官方的OOoBeanViewer.java這個Java做的Applet,裡面有你需要的那個功能,不管你的文件流是不是完整的流,它都能讀取並解析。

『玖』 Java 讀取一個二進制文件

//you read data code
File obfile = new File("襪賣test.dat");//二進告伍逗制文件橘隱名:test.dat
BufferedInputStream instream;
try {
instream = new BufferedInputStream(new FileInputStream(obfile));
try {
instream.read(data, 2, 23);
instream.close();
} catch (IOException ex) {
}
} catch (FileNotFoundException ex) {
}

『拾』 如何用Java或C語言解析二進制文件為文本文件

在學習C語言fopen()函數後,知道它的第二個參數是標志字元串。如果字元串中出現'b',則表明是以打開二進制(binary)文件,否則是打開文本文件。

那麼什麼是文本文件,什麼是二進制文件呢?

從文件編碼的方式來看,文件可分為ASCII碼文件和二進制碼文件兩種。

ASCII文件也稱為文本文件,這種文件在磁碟中存放時每個字元對應一個位元組,用於存放對應的ASCII碼。例如,數5678的存儲形式為:
ASC碼: 00110101 00110110 00110111 00111000
↓ ↓↓ ↓
十進制碼: 5678

共佔用4個位元組。ASCII碼文件可在屏幕上按字元顯示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可顯示文件的內容。 由於是按字元顯示,因此能讀懂文件內容。

二進制文件是按二進制的編碼方式來存放文件的。例如,數5678的存儲形式為:00010110 00101110隻佔二個位元組。二進制文件雖然也可在屏幕上顯示,但其內容無法讀懂。C系統在處理這些文件時,並不區分類型,都看成是字元流,按位元組進行處理。輸入輸出字元流的開始和結束只由程序控制而不受物理符號(如回車符)的控制。因此也把這種文件稱作「流式文件」。

文本文件與二進制文件的區別在系統存儲上它們實際上並沒有什麼區別,都是以二進制的方式存儲於硬碟上。之所以分二進制文件和文本文件,主要是邏輯上的區分,文本文件更人為可讀而已。站在編程的角度看,文本文件是基於字元編碼過後的,比如常見的就有ascii編碼,gbk編碼,unicode編碼等,文本工具直接打開人為可讀。而二進制文件是基於值的編碼,這個值到底是什麼,完全可自定義,所以可以說二進制文件是一種特殊編碼的文件。如果用java編程,可能就根本沒遇到過以二進制打開和文本文件打開這兩種方式。java裡面有字元流和位元組流,字元流是對位元組流的封裝,有編碼解碼,而位元組流操作的則是byte數組,所以更容易理解。python的文件讀寫方式則更貼近C。因為python和java他們底層都是C,所以很有必要弄清C的讀寫文件方式。

在Windows和DOS系統中,狹義的文本文件是指擴展名為txt的文件。實際上,那些沒有規定格式的,由可理解的的ASCII以及其他編碼文字組成的文件都是文本文件,如C源程序文件,HTML超文本,XML。除此之外的其他文件都是二進制文件,如Word文件DOC,圖象格式文件JPG。

實際上,fopen()的 b 標志不但可以打開二進制文件,還可以打開文本文件,同樣,不帶 b 標志也可以打開文本文件。

既然這樣,為什麼還要區分兩種打開方式呢?

因為這兩種方式在讀寫文件時的操作是不一樣的。

二進制方式很簡單,讀文件時,會原封不動的讀出文件的全部內容,寫的時候,也是把內存緩沖區的內容原封不動的寫到文件中。

而文本方式就不一樣了,在寫文件時,會將換行符號CRLF(0x0D 0x0A)全部轉換成單個的0x0A,並且當遇到結束符CTRLZ(0x1A)時,就認為文件已經結束。相應的,寫文件時,會將所有的0x0A換成0x0D0x0A。

所以,若使用文本方式打開二進制文件時,就很容易出現文件讀不完整,或內容不對的錯誤。即使是用文本方式打開文本文件,也要謹慎使用,比如復制文件,就不應該使用文本方式。

要特別注意的是,上面這樣的說法僅適用於DOS和Windows系統。在Unix和其他一些系統中,沒有文本方式和二進制方式的區分,使不使用'b'標志都是一樣的。這是由於不同操作系統對文本文件換行符的定義,和C語言中換行符的定義有所不同而造成的。

如上文已提到,DOS和Windows系統使用CRLF(0x0D 0x0A)即\r\n雙位元組作為文本文件換行符,而Unix文本文件的換行符只有一個位元組LF(0x0A)為。在C語言中,也是以LF即'\n'為換行符。

由於DOS/Windows定義的換行符和C語言的不一致,C語言的標准輸入輸出函數適行讀寫文本文件時,就適行了CRLF->LF的轉換。而Unix的定義和C語言的是一樣的,就不必轉換了。

那麼,為什麼會有定義不一致的情況呢,這純屬歷史原因。當初C是在Unix上發展的,對換行的定義自然就一樣了。其後C被引入到DOS系統,為了使原有的C程序能不加修改的讀寫DOS的文本文件,所以就在文件讀寫上做了修改。隨著DOS/Windows成為主流平台,這個當初為了兼容而做的修改給眾多的C語言開發者添了這樣一個小小的麻煩。

所以,二進制和文本模式的區別就在於對於換行符和一些非可見字元上面的轉化,所以安全起見,是使用二進制讀取會比較安全一些。

閱讀全文

與java打開二進制文件怎麼打開文件相關的資料

熱點內容
中文字幕在線觀看的網站 瀏覽:473
主角上自己女兒的小說 瀏覽:112
javaextjs文件上傳 瀏覽:28
有哪些佛教電影 瀏覽:149
成人劇情小說 瀏覽:113
國外免費小電影網站 瀏覽:909
怎麼把文件夾百度網盤 瀏覽:788
韓國頂級愛情電影 瀏覽:489
美國電影紅 瀏覽:946
框架梁與次梁哪條梁需要加密 瀏覽:6
俄羅斯版越戰英豪電影 瀏覽:970
寶塔上的網站源碼怎麼打包 瀏覽:282
采補爐鼎小說 瀏覽:892
窗口輪廓菜單命令的快捷鍵 瀏覽:300
怎麼看安卓版本是幾位 瀏覽:641
貓撲天涯的情感類小說 瀏覽:428
正能量電影中國 瀏覽:276
妖神記免費全集小說 瀏覽:536
喜虎棋牌源碼 瀏覽:909
武林外傳文件加密 瀏覽:596