A. java的輸入輸出流是什麼有幾種
以下是個人理解。流可以分為位元組流和字元流區別嘛,你去搞清楚位元組和字元的區別就知道了。流,其實沒必要認為太高深,位元組流的輸入流,就是InputStream,他有個read()方法,而且有很多重載read(byte[]b)什麼的,就是把文件轉換成位元組,後一個方法就是把轉換的位元組放到一個byte數組中。例如你定義一個File file=new File("d:/test.txt");byte[]b=new byte[1024];FileInputStream fis=new FileInputStream(file);fis.read(b);fis.close();//b里現在就放的是從文件d:/test.txt讀取的位元組(當然這不太嚴謹,可能會有錯誤)//現在是輸出流FileOutputStream fos=new FileOutputStream(new File("d:/target.txt"));//write方法這個是byte數組中的位元組放到目的文件d:/target.txt中fos.write(b);fos.close();這個是很簡單的寫法,沒考慮文件大小,出現數組越界千萬別怪我,手敲代碼很煩呢,可能有錯誤,自己慢慢體會,這個急不來
B. java怎麼區分輸入流和輸出流
這個是依照內存為標準的,以載入磁碟上的文件到內存為例, 首先你必須把 磁碟上的文件,載入到 內存中,這個就是輸入到內存, 你把內存里的文件,寫到磁碟上,這個是把內存輸出到磁碟上, 以內存為標准,寫進內存,就是輸入, 內存本身有內容,輸出到別的地方,就是輸出,一些網路的輸入輸出流,跟這個是一樣的概念,以 客戶端發送HTTP請求為例,客戶端准備好了HTTP請求的內容,發送給伺服器,這個就是輸出流, 伺服器返回一些內容,寫進你本地的內存,這個就是輸入,但是對於伺服器來說,這個又是不一樣的,你的請求對伺服器來說,是輸入,伺服器給你的內容就是輸出了。一端的輸入,對於另一端來說就是輸出,一端的輸出,對另一端就是輸入。
C. java中的輸入輸出流該怎麼理解
數據流是一串連續不斷的數據的集合,就象水管里的水流,在水管的一端一點一點地供水,而在水管的另一端看到的是一股連續不斷的水流。數據寫入程序可以是一段、一段地向數據流管道中寫入數據,這些數據段會按先後順序形成一個長的數據流。對數據讀取程序來說,看不到數據流在寫入時的分段情況,每次可以讀取其中的任意長度的數據,但只能先讀取前面的數據後,再讀取後面的數據。不管寫入時是將數據分多次寫入,還是作為一個整體一次寫入,讀取時的效果都是完全一樣的。
「流是磁碟或其它外圍設備中存儲的數據的源點或終點。」
在電腦上的數據有三種存儲方式,一種是外存,一種是內存,一種是緩存。比如電腦上的硬碟,磁碟,U盤等都是外存,在電腦上有內存條,緩存是在CPU裡面的。外存的存儲量最大,其次是內存,最後是緩存,但是外存的數據的讀取最慢,其次是內存,緩存最快。這里總結從外存讀取數據到內存以及將數據從內存寫到外存中。對於內存和外存的理解,我們可以簡單的理解為容器,即外存是一個容器,內存又是另外一個容器。那又怎樣把放在外存這個容器內的數據讀取到內存這個容器以及怎麼把內存這個容器里的數據存到外存中呢?
在Java類庫中,IO部分的內容是很龐大的,因為它涉及的領域很廣泛:
標准輸入輸出,文件的操作,網路上的數據流,字元串流,對象流,zip文件流等等,java中將輸入輸出抽象稱為流,就好像水管,將兩個容器連接起來。將數據沖外存中讀取到內存中的稱為輸入流,將數據從內存寫入外存中的稱為輸出流。
流是一個很形象的概念,當程序需要讀取數據的時候,就會開啟一個通向數據源的流,這個數據源可以是文件,內存,或是網路連接。類似的,當程序需要寫入數據的時候,就會開啟一個通向目的地的流。
D. 怎麼理解Java的輸入輸出流
輸入輸出是相對內存來說的,比方說,你站在內存的角度來看,有數據讀進內存就是輸入,數據被從內存取出就是輸出,至於流是數據的一種形式不懂就去看看數據結構的書,知道這個答復不能利你滿意,只是想讓你找著方向而已,我以前也迷糊了好長時間……
E. Java里那個輸入流和輸出流怎麼用
//java中使用文件輸入流和文件輸出流進行文件讀寫的用例!
Java
packagecom.test.io;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
/**
*
*@author亞當愛上java
*用例內容:文件輸入流和文件輸入流結合用例,位元組流方式
*時間:2010-06-20
*注意事項:文件輸入流和文件輸出流都是相對與內存來說的,例如通過程序讀取文件時往內存輸入數據就是文件輸入流
*/
publicclassFileInputOrOutput{
publicstaticvoidmain(String[]args){
//文件或者路徑名的抽象表現形式,意思就是說之後如果進行操作的話就是全部在這個抽象路徑名所指向的文件或者文件加中
Filefile=newFile("e:/test.txt");
Filefile2=newFile("e:/test1.txt");
//文件位元組數的個數
//System.out.println(file.length());
try{
/*------------------------------------------讀操作部分-----------------------------------------------*/
//文件輸入流對象
InputStreamfis=newFileInputStream(file);
//文件輸入流對象所讀取的位元組數大小
//System.out.println(fis.available());
/**
*1.按照一個位元組為單位進行讀取數據,弊端是遇到中文就會把中文的漢字拆開從而出現亂碼
*/
////流對象讀出的返回值是每次所讀到的一個字元所對應的ascii碼值
//inti=fis.read();
//
////如果已經讀到文件尾則i==-1,此時終止循環
//while(i!=-1){
//System.out.print((char)i);
//保證每一次循環都繼續往後讀取一個字元,否則i的值不變會成為死循環
//i=fis.read();
//}
/**
*2.按照一個位元組數組所指定的大小為單位進行讀取,每次最多可以讀取數組定義的大小的位元組個數
*/
//每次讀取都以1K位元組作為單位來進行
byteb[]=newbyte[1024];
//流對象讀出並返回的是每次讀取位元組的個數,最大每次讀取自己數可以和數組b.length相同
//b中存儲了每次所讀取的所有數據
inti=fis.read(b);
Stringstr="";
//如果已經讀到文件尾則i==-1,此時終止循環
while(i!=-1){
//把每次讀取的位元組數組解碼為字元串
//參數1:要解碼為字元的位元組
//參數2:要解碼的首字元的索引
//參數3:要解碼的位元組的個數,如果文件個數大於所設定的一次讀取文件的大小時i的取值就是
//b.length,否則小於數組的位元組大小時則為實際的讀取出自己數的大小
str=str+newString(b,0,i);
//保證每一次都往文件的下一部分進行讀取,否則i值沒有變化會成為死循環
i=fis.read(b);
}
//System.out.print(str);
//關閉輸入流對象
fis.close();
/*------------------------------------------寫操作部分-----------------------------------------------*/
//文件輸出流對象
OutputStreamfos=newFileOutputStream(file2);
//str是從file所指定的文件中讀出的所有內容,將此內容寫入另一個文件中
//將字元解碼為位元組數組
byteb2[]=str.getBytes();
//將解碼後的位元組數組,通過文件輸出流對象寫入到緩沖區中
fos.write(b);
//強制將緩沖區中的內容輸出到文件中
fos.flush();
//關閉輸出流對象
fos.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}