javabyte文件
⑴ java中如何把一個文件轉化為byte數組
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
getBytesFromFile(new File("C:\\aaa.txt"));
}catch(IOException e){
System.out.println("IOException");
}
}
// 返回一個byte數組
public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file);
// 獲取文件大小
long length = file.length();
if (length > Integer.MAX_VALUE) {
// 文件太大,無法讀取
throw new IOException("File is to large "+file.getName());
}
// 創建一個數據來保存文件數據
byte[] bytes = new byte[(int)length];
// 讀取數據到byte數組中
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
// 確保所有數據均被讀取
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file.getName());
}
// Close the input stream and return bytes
is.close();
return bytes;
}
}
⑵ java中的byte有什麼作用
byte即位元組的意思,是java中的基本類型,用心申明位元組型的變數。
通常在讀取非文本文件時(如圖片,聲音,可執行文件)需要用位元組數組來保存文件的內容,在下載文件時,也是用byte數組作臨時的緩沖器接收文件內容。所以說byte在文件操作時是必不可少的。不管是對文件寫入還是讀取都要用到。
⑶ Java如何向文件中寫byte數組
寫byte數組不能用Writer,否則不可見字元會被轉換掉 FileOutputStream fos = new FileOutputStream(d:/b.txt); Writer out= new BufferedWriter(new OutputStreamWriter(fos)); out.write(0xC9); out.write(0x99); out.close();
⑷ Java中什麼是字元文件,什麼是位元組文件
理論上沒有本質區別。
所有的文件都是以二進制存儲的,文件只有「文本文件」和「不是文本文件」這兩種。只是因為裡面的數據不同或者解析數據的方式不同而導致你看到的結果不同。下面給你非常詳細的解釋:
「字元文件」確切的說法應該是文本文件。說過了,它也是以二進制存儲的,並且是連續的(一大串 1 和 0 組成的數字,沒有任何標記隔開),而在讀取的時候由程序把它斷開。最簡單的例子,擴展的 ASCII 碼存儲的文本文件,其中每個字元占 8 位(正好是一個位元組),那麼在讀取此文件的時候程序會 8 位一讀,也就是 1 個位元組(字元)一讀。讀完 8 位再讀下 8 位,直達文件末尾或者手動結束。「流」這個概念就是這么來的。每次讀入一個字元就可以稱為字元輸入流,但本質上是一個比特(位)流。
然後「位元組文件」,當然你可以這么叫,不過要和文本文件區分的話一般叫「二進制文件」,雖然本質上沒區別。所有的文件都是二進制文件,其實所有的文件也都是位元組文件。因為位元組也基本是數據的最小單位了(比特當然更小,但是比特是計算機處理數據時的單位,位元組是最小數據塊的單位)。上面的 ASCII 的「文本文件」是一種特殊的位元組文件,每個數據塊就是一個位元組。而一般的位元組文件中,數據塊可以是任何數據類型,可以是 16 位的 short,32 位的 int,也可以是 32 位的 float,等等類型,一般叫「二進制文件」。讀此類文件的時候必須要對應好,該是 short 的地方就讀入 2 個位元組,該是 int 的地方就該讀入 4 個位元組,一旦錯了所有後面的數據就可能都讀錯了。這個「流」你可以隨意稱呼,可以叫「數據流」,因為各種類型的數據都有,只能統稱為「數據」,但本質上就是二進制的比特流。
另外,你說記事本打開亂碼的是「位元組文件」,首先上面說過了,文本文件本身是一種特殊的位元組文件;其次記事本打開只要不是亂碼的必然是文本文件,因為它顯示的是良好的文本,而記事本打開是亂碼的不一定就不是文本文件,可能是編碼格式的原因。這個又牽扯到編碼格式,太多了,實在沒辦法些這里,你到我空間有編碼格式的文章可以看。
不知道你看懂了沒有?可能寫得有點亂,但你學下去就會明白的。
⑸ java byte數組寫入本地文件,那這個文件是二進制文件嗎不是的話,是什麼文件跪求解答啊
所有的文件都可以看成二進制文件,因為硬碟里只能保存0和1 。至於是否文本文件,需要確認裡面的內容才行。
⑹ java中byte[]是怎麼意思
byte即位元組的意思,是java中的基本類型,用心申明位元組型的變數。
通常在讀取非文本文件時(如圖片,聲音,可執行文件)需要用位元組數組來保存文件的內容。
在下載文件時,也是用byte數組作臨時的緩沖器接收文件內容。所以說byte在文件操作時是必不可少的。不管是對文件寫入還是讀取都要用到。
(6)javabyte文件擴展閱讀:
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
Java語言是一門隨時代快速發展的計算機語言程序,其深刻展示了程序編寫的精髓,加上其簡明嚴謹的結構及簡潔的語法編寫為其將來的發展及維護提供了保障。
由於提供了網路應用的支持和多媒體的存取,會推動Internet和企業網路的Web的應用。
⑺ java文件轉換為byte數組
那你可以把文件的都分成 一小部分來寫啊
如:
FileInputStreamins=newFileInputStream(file);//定位流
BufferedInputStreambr=newBufferedInputStream(ins);//讀取流
OutputStreamous=response.getOutputStream();
/*這段應該內就是你原本的寫法*/
/*byteb[]=newbyte[(int)file.length()];
while(br.read(b)!=-1){
//將b中的容數據寫到客戶端的內存
ous.write(b);
}*/
/*改成這種就可以了*/
byteb[]=newbyte[1024];
intlen=0;
while((len=br.read(b))!=-1){
ous.write(b,0,len);
}
望點贊,加分
⑻ JAVA 讀文件一定得創建byte數組為什麼
看情況吧...
當然你心情好了可以一個位元組一個位元組的讀;
為什麼要用byte,其實java讀寫文件調用的依然是底層操作系統的介面.
在操作系統層面數據時按照塊來讀的.
申請byte數組的目的是在jvm中開辟一塊空間,然後調用jvm操作指令,jvm根據指令告訴操作系統,把這塊數據給我填滿.操作系統填滿之後,java就返回了.
為什麼要用byte?因為byte是數據存儲的最小單位了.
所以byte[]數組就是一次性讀取多少個最小單位,然後返回.
這只是簡單的描述,要更詳細的了解,建議讀java language specification (jls),jls3好像是1.5,1.6的jls7是jdk1.7的.還有就是操作系統原理相關的書.
只能回答這么多了,再深的我也不懂~
⑼ Java如何自定義的byte[]數組寫入文件
FileOutputStream.write(byte[] bytes)寫入文件的是二進制碼,你寫入二進制1和0是不可見字元,必須用二進制/16進制文件格式打開才可以看到,