日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java中的I/O整理完整版

本文章基本覆蓋了java IO的全部內(nèi)容,java新IO沒有涉及,因?yàn)槲蚁牒瓦@個(gè)分開,以突出那個(gè)的重要性,新IO哪一篇文章還沒有開始寫,估計(jì)很快就能和大家見面。照舊,文章依舊以例子為主,因?yàn)橹v解內(nèi)容的java書很多了,我覺的學(xué)以致用才是真。代碼是寫出來的,不是看出來的。

創(chuàng)新互聯(lián)建站成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元古塔做網(wǎng)站,已為上家服務(wù),為古塔各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

***歡迎大家提出意見和建議。

【案例1】創(chuàng)建一個(gè)新文件

 
 
 
 
  1. import java.io.*;
  2. class hello{
  3.     public static void main(String[] args) {
  4.         File f=new File("D:\\hello.txt");
  5.         try{
  6.             f.createNewFile();
  7.         }catch (Exception e) {
  8.             e.printStackTrace();
  9.         }
  10.     }
  11. }

【運(yùn)行結(jié)果】:

程序運(yùn)行之后,在d盤下會(huì)有一個(gè)名字為hello.txt的文件。

【案例2】File類的兩個(gè)常量

 
 
 
 
  1. import java.io.*;
  2. class hello{
  3.     public static void main(String[] args) {
  4.         System.out.println(File.separator);
  5.         System.out.println(File.pathSeparator);
  6.     }
  7. }

【運(yùn)行結(jié)果】:

\

;

此處多說幾句:有些同學(xué)可能認(rèn)為,我直接在windows下使用\進(jìn)行分割不行嗎?當(dāng)然是可以的。但是在linux下就不是\了。所以,要想使得我們的代碼跨平臺(tái),更加健壯,所以,大家都采用這兩個(gè)常量吧,其實(shí)也多寫不了幾行。

現(xiàn)在我們使用File類中的常量改寫上面的代碼:

 
 
 
 
  1. import java.io.*;
  2. class hello{
  3.     public static void main(String[] args) {
  4.         String fileName="D:"+File.separator+"hello.txt";
  5.         File f=new File(fileName);
  6.         try{
  7.             f.createNewFile();
  8.         }catch (Exception e) {
  9.             e.printStackTrace();
  10.         }
  11.     }
  12. }

你看,沒有多寫多少吧,呵呵。所以建議使用File類中的常量。

刪除一個(gè)文件

 
 
 
 
  1. /**
  2.  * 刪除一個(gè)文件
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) {
  7.         String fileName="D:"+File.separator+"hello.txt";
  8.         File f=new File(fileName);
  9.         if(f.exists()){
  10.             f.delete();
  11.         }else{
  12.             System.out.println("文件不存在");
  13.         }
  14.         
  15.     }
  16. }

創(chuàng)建一個(gè)文件夾

 
 
 
 
  1. /**
  2.  * 創(chuàng)建一個(gè)文件夾
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) {
  7.         String fileName="D:"+File.separator+"hello";
  8.         File f=new File(fileName);
  9.         f.mkdir();
  10.     }
  11. }

【運(yùn)行結(jié)果】:

D盤下多了一個(gè)hello文件夾

列出指定目錄的全部文件(包括隱藏文件):

 
 
 
 
  1. /**
  2.  * 使用list列出指定目錄的全部文件
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) {
  7.         String fileName="D:"+File.separator;
  8.         File f=new File(fileName);
  9.         String[] str=f.list();
  10.         for (int i = 0; i < str.length; i++) {
  11.             System.out.println(str[i]);
  12.         }
  13.     }
  14. }

【運(yùn)行結(jié)果】:

$RECYCLE.BIN

360

360Downloads

360Rec

360SoftMove

Config.Msi

da

Downloads

DriversBackup

eclipse

java web整合開發(fā)和項(xiàng)目實(shí)戰(zhàn)

Lenovo

MSOCache

Program

Program Files

python

RECYGLER.{8F92DA1***229-A4D5-B5CE-5280C8B89C19}

System Volume Information

Tomcat6

var

vod_cache_data

新建文件夾

(你的運(yùn)行結(jié)果應(yīng)該和這個(gè)不一樣的,呵呵)

但是使用list返回的是String數(shù)組,。而且列出的不是完整路徑,如果想列出完整路徑的話,需要使用listFiles.他返回的是File的數(shù)組

列出指定目錄的全部文件(包括隱藏文件):

 
 
 
 
  1. /**
  2.  * 使用listFiles列出指定目錄的全部文件
  3.  * listFiles輸出的是完整路徑
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) {
  8.         String fileName="D:"+File.separator;
  9.         File f=new File(fileName);
  10.         File[] str=f.listFiles();
  11.         for (int i = 0; i < str.length; i++) {
  12.             System.out.println(str[i]);
  13.         }
  14.     }
  15. }

【運(yùn)行結(jié)果】:

D:\$RECYCLE.BIN

D:\360

D:\360Downloads

D:\360Rec

D:\360SoftMove

D:\Config.Msi

D:\da

D:\Downloads

D:\DriversBackup

D:\eclipse

D:\java web整合開發(fā)和項(xiàng)目實(shí)戰(zhàn)

D:\Lenovo

D:\MSOCache

D:\Program

D:\Program Files

D:\python

D:\RECYGLER.{8F92DA1***229-A4D5-B5CE-5280C8B89C19}

D:\System Volume Information

D:\Tomcat6

D:\var

D:\vod_cache_data

D:\新建文件夾

通過比較可以指定,使用listFiles更加方便

#p#

判斷一個(gè)指定的路徑是否為目錄

 
 
 
 
  1. /**
  2.  * 使用isDirectory判斷一個(gè)指定的路徑是否為目錄
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) {
  7.         String fileName="D:"+File.separator;
  8.         File f=new File(fileName);
  9.         if(f.isDirectory()){
  10.             System.out.println("YES");
  11.         }else{
  12.             System.out.println("NO");
  13.         }
  14.     }
  15. }

【運(yùn)行結(jié)果】:YES

搜索指定目錄的全部內(nèi)容

 
 
 
 
  1. /**
  2.  * 列出指定目錄的全部內(nèi)容
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) {
  7.         String fileName="D:"+File.separator;
  8.         File f=new File(fileName);
  9.         print(f);
  10.     }
  11.     public static void print(File f){
  12.         if(f!=null){
  13.             if(f.isDirectory()){
  14.                 File[] fileArray=f.listFiles();
  15.                 if(fileArray!=null){
  16.                     for (int i = 0; i < fileArray.length; i++) {
  17.                         //遞歸調(diào)用
  18.                         print(fileArray[i]);
  19.                     }
  20.                 }
  21.             }
  22.             else{
  23.                 System.out.println(f);
  24.             }
  25.         }
  26.     }
  27. }

【運(yùn)行結(jié)果】:

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\framepages\web4welcome_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\help_005fhome_jsp.class

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\help_005fhome_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\home_jsp.class

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\home_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\index_jsp.class

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\index_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\login_jsp.class

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\login_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\modify_005fuser_005finfo_jsp.class

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\modify_005fuser_005finfo_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\register_005fnotify_jsp.class

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\register_005fnotify_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\sign_005fup_jsp.class

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\sign_005fup_jsp.java

D:\Tomcat6\work\Catalina\localhost\nevel\org\apache\jsp\transit_jsp.class

【使用RandomAccessFile寫入文件】

 
 
 
 
  1. /**
  2.  * 使用RandomAccessFile寫入文件
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) throws IOException {
  7.         String fileName="D:"+File.separator+"hello.txt";
  8.         File f=new File(fileName);
  9.         RandomAccessFile demo=new RandomAccessFile(f,"rw");
  10.         demo.writeBytes("asdsad");
  11.         demo.writeInt(12);
  12.         demo.writeBoolean(true);
  13.         demo.writeChar('A');
  14.         demo.writeFloat(1.21f);
  15.         demo.writeDouble(12.123);
  16.         demo.close();   
  17.     }
  18. }

如果你此時(shí)打開hello。txt查看的話,會(huì)發(fā)現(xiàn)那是亂碼。

字節(jié)流

【向文件中寫入字符串】

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  * 向文件中寫入字符串
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         OutputStream out =new FileOutputStream(f);
  11.         String str="你好";
  12.         byte[] b=str.getBytes();
  13.         out.write(b);
  14.         out.close();
  15.     }
  16. }

查看hello.txt會(huì)看到“你好”

當(dāng)然也可以一個(gè)字節(jié)一個(gè)字節(jié)的寫。

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  * 向文件中一個(gè)字節(jié)一個(gè)字節(jié)的寫入字符串
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         OutputStream out =new FileOutputStream(f);
  11.         String str="你好";
  12.         byte[] b=str.getBytes();
  13.         for (int i = 0; i < b.length; i++) {
  14.             out.write(b[i]);
  15.         }
  16.         out.close();
  17.     }
  18. }

結(jié)果還是:“你好”

向文件中追加新內(nèi)容:

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  * 向文件中追加新內(nèi)容:
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         OutputStream out =new FileOutputStream(f,true);
  11.         String str="Rollen";
  12.         //String str="\r\nRollen";  可以換行
  13.         byte[] b=str.getBytes();
  14.         for (int i = 0; i < b.length; i++) {
  15.             out.write(b[i]);
  16.         }
  17.         out.close();
  18.     }
  19. }

【運(yùn)行結(jié)果】:

你好Rollen

【讀取文件內(nèi)容】

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  * 讀文件內(nèi)容
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         InputStream in=new FileInputStream(f);
  11.         byte[] b=new byte[1024];
  12.         in.read(b);
  13.         in.close();
  14.         System.out.println(new String(b));
  15.     }
  16. }

【運(yùn)行結(jié)果】

你好Rollen

Rollen_

但是這個(gè)例子讀取出來會(huì)有大量的空格,我們可以利用in.read(b);的返回值來設(shè)計(jì)程序。如下:

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  * 讀文件內(nèi)容
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         InputStream in=new FileInputStream(f);
  11.         byte[] b=new byte[1024];
  12.         int len=in.read(b);
  13.         in.close();
  14.         System.out.println("讀入長度為:"+len);
  15.         System.out.println(new String(b,0,len));
  16.     }
  17. }

【運(yùn)行結(jié)果】:

讀入長度為:18

你好Rollen

Rollen

讀者觀察上面的例子可以看出,我們預(yù)先申請了一個(gè)指定大小的空間,但是有時(shí)候這個(gè)空間可能太小,有時(shí)候可能太大,我們需要準(zhǔn)確的大小,這樣節(jié)省空間,那么我們可以這樣干:

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  * 讀文件內(nèi)容,節(jié)省空間
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         InputStream in=new FileInputStream(f);
  11.         byte[] b=new byte[(int)f.length()];
  12.         in.read(b);
  13.         System.out.println("文件長度為:"+f.length());
  14.         in.close();
  15.         System.out.println(new String(b));
  16.     }
  17. }

文件長度為:18

你好Rollen

Rollen

將上面的例子改為一個(gè)一個(gè)讀:

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  * 讀文件內(nèi)容,節(jié)省空間
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         InputStream in=new FileInputStream(f);
  11.         byte[] b=new byte[(int)f.length()];
  12.         for (int i = 0; i < b.length; i++) {
  13.             b[i]=(byte)in.read();
  14.         }
  15.         in.close();
  16.         System.out.println(new String(b));
  17.     }
  18. }

輸出的結(jié)果和上面的一樣。

細(xì)心的讀者可能會(huì)發(fā)現(xiàn),上面的幾個(gè)例子都是在知道文件的內(nèi)容多大,然后才展開的,有時(shí)候我們不知道文件有多大,這種情況下,我們需要判斷是否獨(dú)到文件的末尾。

 
 
 
 
  1. /**
  2.  * 字節(jié)流
  3.  *讀文件
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         InputStream in=new FileInputStream(f);
  11.         byte[] b=new byte[1024];
  12.         int count =0;
  13.         int temp=0;
  14.         while((temp=in.read())!=(-1)){
  15.             b[count++]=(byte)temp;
  16.         }
  17.         in.close();
  18.         System.out.println(new String(b));
  19.     }
  20. }

【運(yùn)行結(jié)果】

你好Rollen

Rollen_

提醒一下,當(dāng)獨(dú)到文件末尾的時(shí)候會(huì)返回-1.正常情況下是不會(huì)返回-1的

#p#

字符流

【向文件中寫入數(shù)據(jù)】

現(xiàn)在我們使用字符流

 
 
 
 
  1. /**
  2.  * 字符流
  3.  * 寫入數(shù)據(jù)
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         Writer out =new FileWriter(f);
  11.         String str="hello";
  12.         out.write(str);
  13.         out.close();
  14.     }
  15. }

當(dāng)你打開hello。txt的時(shí)候,會(huì)看到hello

其實(shí)這個(gè)例子上之前的例子沒什么區(qū)別,只是你可以直接輸入字符串,而不需要你將字符串轉(zhuǎn)化為字節(jié)數(shù)組。

當(dāng)你如果想問文件中追加內(nèi)容的時(shí)候,可以使用將上面的聲明out的哪一行換為:

Writer out =new FileWriter(f,true);

這樣,當(dāng)你運(yùn)行程序的時(shí)候,會(huì)發(fā)現(xiàn)文件內(nèi)容變?yōu)椋?/p>

hellohello如果想在文件中換行的話,需要使用“\r\n”

比如將str變?yōu)镾tring str="\r\nhello";

這樣文件追加的str的內(nèi)容就會(huì)換行了。

從文件中讀內(nèi)容:

 
 
 
 
  1. /**
  2.  * 字符流
  3.  * 從文件中讀出內(nèi)容
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         char[] ch=new char[100];
  11.         Reader read=new FileReader(f);
  12.         int count=read.read(ch);
  13.         read.close();
  14.         System.out.println("讀入的長度為:"+count);
  15.         System.out.println("內(nèi)容為"+new String(ch,0,count));
  16.     }
  17. }

【運(yùn)行結(jié)果】:

讀入的長度為:17

內(nèi)容為hellohello

hello

當(dāng)然***采用循環(huán)讀取的方式,因?yàn)槲覀冇袝r(shí)候不知道文件到底有多大。

 
 
 
 
  1. /**
  2.  * 字符流
  3.  * 從文件中讀出內(nèi)容
  4.  * */
  5. import java.io.*;
  6. class hello{
  7.     public static void main(String[] args) throws IOException {
  8.         String fileName="D:"+File.separator+"hello.txt";
  9.         File f=new File(fileName);
  10.         char[] ch=new char[100];
  11.         Reader read=new FileReader(f);
  12.         int temp=0;
  13.         int count=0;
  14.         while((temp=read.read())!=(-1)){
  15.             ch[count++]=(char)temp;
  16.         }
  17.         read.close();
  18.         System.out.println("內(nèi)容為"+new String(ch,0,count));
  19.     }
  20. }

運(yùn)行結(jié)果:

內(nèi)容為hellohello

hello

關(guān)于字節(jié)流和字符流的區(qū)別

實(shí)際上字節(jié)流在操作的時(shí)候本身是不會(huì)用到緩沖區(qū)的,是文件本身的直接操作的,但是字符流在操作的 時(shí)候下后是會(huì)用到緩沖區(qū)的,是通過緩沖區(qū)來操作文件的。

讀者可以試著將上面的字節(jié)流和字符流的程序的***一行關(guān)閉文件的代碼注釋掉,然后運(yùn)行程序看看。你就會(huì)發(fā)現(xiàn)使用字節(jié)流的話,文件中已經(jīng)存在內(nèi)容,但是使用字符流的時(shí)候,文件中還是沒有內(nèi)容的,這個(gè)時(shí)候就要刷新緩沖區(qū)。

使用字節(jié)流好還是字符流好呢?

答案是字節(jié)流。首先因?yàn)橛脖P上的所有文件都是以字節(jié)的形式進(jìn)行傳輸或者保存的,包括圖片等內(nèi)容。但是字符只是在內(nèi)存中才會(huì)形成的,所以在開發(fā)中,字節(jié)流使用廣泛。

文件的復(fù)制

其實(shí)DOS下就有一個(gè)文件復(fù)制功能,比如我們想把d盤下面的hello.txt文件復(fù)制到d盤下面的rollen.txt文件中,那么我們就可以使用下面的命令:

copy d:\hello.txt d:\rollen.txt

運(yùn)行之后你會(huì)在d盤中看見hello.txt.,并且兩個(gè)文件的內(nèi)容是一樣的,(這是屁話)

下面我們使用程序來復(fù)制文件吧。

基本思路還是從一個(gè)文件中讀入內(nèi)容,邊讀邊寫入另一個(gè)文件,就是這么簡單。、

首先編寫下面的代碼:

 
 
 
 
  1. /**
  2.  * 文件的復(fù)制
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) throws IOException {
  7.         if(args.length!=2){
  8.             System.out.println("命令行參數(shù)輸入有誤,請檢查");
  9.             System.exit(1);
  10.         }
  11.         File file1=new File(args[0]);
  12.         File file2=new File(args[1]);
  13.         
  14.         if(!file1.exists()){
  15.             System.out.println("被復(fù)制的文件不存在");
  16.             System.exit(1);
  17.         }
  18.         InputStream input=new FileInputStream(file1);
  19.         OutputStream output=new FileOutputStream(file2);
  20.         if((input!=null)&&(output!=null)){
  21.             int temp=0;
  22.             while((temp=input.read())!=(-1)){
  23.                 output.write(temp);
  24.             }
  25.         }
  26.         input.close();
  27.         output.close(); 
  28.     }
  29. }

然后在命令行下面

javac hello.java

java hello d:\hello.txt d:\rollen.txt

現(xiàn)在你就會(huì)在d盤看到rollen。txt了

OutputStreramWriter 和InputStreamReader類

整個(gè)IO類中除了字節(jié)流和字符流還包括字節(jié)和字符轉(zhuǎn)換流。

OutputStreramWriter將輸出的字符流轉(zhuǎn)化為字節(jié)流

InputStreamReader將輸入的字節(jié)流轉(zhuǎn)換為字符流

但是不管如何操作,***都是以字節(jié)的形式保存在文件中的。

將字節(jié)輸出流轉(zhuǎn)化為字符輸出流

 
 
 
 
  1. /**
  2.  * 將字節(jié)輸出流轉(zhuǎn)化為字符輸出流
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) throws IOException {
  7.         String fileName= "d:"+File.separator+"hello.txt";
  8.         File file=new File(fileName);
  9.         Writer out=new OutputStreamWriter(new FileOutputStream(file));
  10.         out.write("hello");
  11.         out.close();
  12.     }
  13. }

運(yùn)行結(jié)果:文件中內(nèi)容為:hello

將字節(jié)輸入流變?yōu)樽址斎肓?/p>

 
 
 
 
  1. /**
  2.  * 將字節(jié)輸入流變?yōu)樽址斎肓?
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) throws IOException {
  7.         String fileName= "d:"+File.separator+"hello.txt";
  8.         File file=new File(fileName);
  9.         Reader read=new InputStreamReader(new FileInputStream(file));
  10.         char[] b=new char[100];
  11.         int len=read.read(b);
  12.         System.out.println(new String(b,0,len));
  13.         read.close();
  14.     }
  15. }

【運(yùn)行結(jié)果】:hello

前面列舉的輸出輸入都是以文件進(jìn)行的,現(xiàn)在我們以內(nèi)容為輸出輸入目的地,使用內(nèi)存操作流

ByteArrayInputStream 主要將內(nèi)容寫入內(nèi)容

ByteArrayOutputStream 主要將內(nèi)容從內(nèi)存輸出

使用內(nèi)存操作流將一個(gè)大寫字母轉(zhuǎn)化為小寫字母

 
 
 
 
  1. /**
  2.  * 使用內(nèi)存操作流將一個(gè)大寫字母轉(zhuǎn)化為小寫字母
  3.  * */
  4. import java.io.*;
  5. class hello{
  6.     public static void main(String[] args) throws IOException {
  7.         String str="ROLLENHOLT";
  8.         ByteArrayInputStream input=new ByteArrayInputStream(str.getBytes());
  9.         ByteArrayOutputStream output=new ByteArrayOutputStream();
  10.         int temp=0;
  11.         while((temp=input.read())!=-1){
  12.             char ch=(char)temp;
  13.             output.write(Character.toLowerCase(ch));
  14.         }
  15.         String outStr=output.toString();
  16.         input.close();
  17.         output.close();
  18.         System.out.println(outStr);
  19.     }
  20. }

【運(yùn)行結(jié)果】:

rollenholt

內(nèi)容操作流一般使用來生成一些臨時(shí)信息采用的,這樣可以避免刪除的麻煩。

#p#

管道流

管道流主要可以進(jìn)行兩個(gè)線程之間的通信。

PipedOutputStream 管道輸出流

PipedInputStream 管道輸入流

驗(yàn)證管道流

 
 
 
 
  1. /**
  2.  * 驗(yàn)證管道流
  3.  * */
  4. import java.io.*;
  5. /**
  6.  * 消息發(fā)送類
  7.  * */
  8. class Send implements Runnable{
  9.     private PipedOutputStream out=null;
  10.     public Send() {
  11.         out=new PipedOutputStream();
  12.     }
  13.     public PipedOutputStream getOut(){
  14.         return this.out;
  15.     }
  16.     public void run(){
  17.         String message="hello , Rollen";
  18.         try{
  19.             out.write(message.getBytes());
  20.         }catch (Exception e) {
  21.             e.printStackTrace();
  22.         }try{
  23.             out.close();
  24.         }catch (Exception e) {
  25.             e.printStackTrace();
  26.         }
  27.     }
  28. }
  29. /**
  30.  * 接受消息類
  31.  * */
  32. class Recive implements Runnable{ &nb
    新聞名稱:Java中的I/O整理完整版
    標(biāo)題路徑:http://www.dlmjj.cn/article/djogeco.html