日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術(shù) > java- Java IO

java- Java IO

來源:程序員人生   發(fā)布時間:2016-08-11 08:28:30 閱讀次數(shù):2536次

 

這是java io 比較基本的1些處理流,除此以外我們還會提到1些比較深入的基于io的處理類,比如console類,SteamTokenzier,Externalizable接口,Serializable接口等等1些高級用法極為原理。

 

1、java io的開始:文件

1. 我們主要講的是流,流的本質(zhì)也是對文件的處理,我們按部就班1步1步從文件將到流去。

2. java 處理文件的類 File,java提供了10分詳細的文件處理方法,舉了其中幾個例子,其余的可以去

 

Java代碼  收藏代碼
  1. package com.hxw.io;  
  2. import java.io.*;  
  3.    
  4. public class FileExample{  
  5.     public static void main(String[] args) {  
  6.        
  7.         createFile();  
  8.     }  
  9.    
  10.   /** 
  11.    * 文件處理示例 
  12.    */  
  13.   public static void createFile() {  
  14.      File f=new File("E:/電腦桌面/jar/files/create.txt");  
  15.         try{  
  16.             f.createNewFile();  //當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創(chuàng)建1個新的空文件。  
  17.             System.out.println("該分區(qū)大小"+f.getTotalSpace()/(1024*1024*1024)+"G"); //返回由此抽象路徑名表示的文件或目錄的名稱。  
  18.             f.mkdirs();  //創(chuàng)建此抽象路徑名指定的目錄,包括所有必須但不存在的父目錄。  
  19. //            f.delete(); //  刪除此抽象路徑名表示的文件或目錄  
  20.            System.out.println("文件名  "+f.getName());  //  返回由此抽象路徑名表示的文件或目錄的名稱。  
  21.            System.out.println("文件父目錄字符串 "+f.getParent());// 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。  
  22.             
  23.         }catch (Exception e) {  
  24.             e.printStackTrace();  
  25.         }  
  26.   }  
  27. }  



2、字節(jié)流:

1.字節(jié)流有輸入和輸出流,我們首先看輸入流InputStream,我們首先解析1個例子(FileInputStream)。

 

Java代碼  收藏代碼
  1. package com.hxw.io;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. public class FileCount {  
  7.    /** 
  8.     * 我們寫1個檢測文件長度的小程序,別看這個程序挺長的,你疏忽try catch塊后發(fā)現(xiàn)也就那末幾行而已。 
  9.     */  
  10.    publicstatic void main(String[] args) {  
  11.       //TODO 自動生成的方法存根  
  12.              int count=0;  //統(tǒng)計文件字節(jié)長度  
  13.       InputStreamstreamReader = null;   //文件輸入流  
  14.       try{  
  15.           streamReader=newFileInputStream(new File("D:/David/Java/java 高級進階/files/tiger.jpg"));  
  16.           /*1.new File()里面的文件地址也能夠?qū)懗蒁:\\David\\Java\\java 高級進階\\files\\tiger.jpg,前1個\是用來對后1個 
  17.            * 進行轉(zhuǎn)換的,F(xiàn)ileInputStream是有緩沖區(qū)的,所以用完以后必須關(guān)閉,否則可能致使內(nèi)存占滿,數(shù)據(jù)丟失。 
  18.           */  
  19.           while(streamReader.read()!=-1) {  //讀取文件字節(jié),并遞增指針到下1個字節(jié)  
  20.              count++;  
  21.           }  
  22.           System.out.println("---長度是: "+count+" 字節(jié)");  
  23.       }catch (final IOException e) {  
  24.           //TODO 自動生成的 catch 塊  
  25.           e.printStackTrace();  
  26.       }finally{  
  27.           try{  
  28.              streamReader.close();  
  29.           }catch (IOException e) {  
  30.              //TODO 自動生成的 catch 塊  
  31.              e.printStackTrace();  
  32.           }  
  33.       }  
  34.    }  
  35.    
  36. }  



我們1步1步來,首先,上面的程序存在問題是,每讀取1個自己我都要去用到FileInputStream,我輸出的結(jié)果是“---長度是: 64982 字節(jié)”,那末進行了64982次操作!可能想象如果文件10分龐大,這樣的操作肯定會出大問題,所以引出了緩沖區(qū)的概念。可以將streamReader.read()改成streamReader.read(byte[]b)此方法讀取的字節(jié)數(shù)目等于字節(jié)數(shù)組的長度,讀取的數(shù)據(jù)被存儲在字節(jié)數(shù)組中,返回讀取的字節(jié)數(shù),InputStream還有其他方法mark,reset,markSupported方法,例如:

 

markSupported 判斷該輸入流能支持mark 和 reset 方法。

mark用于標記當前位置;在讀取1定數(shù)量的數(shù)據(jù)(小于readlimit的數(shù)據(jù))后使用reset可以回到mark標記的位置。

FileInputStream不支持mark/reset操作;BufferedInputStream支持此操作;

mark(readlimit)的含義是在當前位置作1個標記,制定可以重新讀取的最大字節(jié)數(shù),也就是說你如果標記后讀取的字節(jié)數(shù)大于readlimit,你就再也回不到回來的位置了。

通常InputStream的read()返回⑴后,說明到達文件尾,不能再讀取。除非使用了mark/reset。

 

 

2.FileOutputStream 按部就班版, InputStream是所有字節(jié)輸出流的父類,子類有ByteArrayOutputStream,FileOutputStream,ObjectOutputStreanm,這些我們在后面都會逐一說到。先說FileOutputStream

我以1個文件復制程序來講,順便演示1下緩存區(qū)的使用。(Java I/O默許是不緩沖流的,所謂“緩沖”就是先把從流中得到的1塊字節(jié)序列暫存在1個被稱為buffer的內(nèi)部字節(jié)數(shù)組里,然后你可以1下子取到這1整塊的字節(jié)數(shù)據(jù),沒有緩沖的流只能1個字節(jié)1個字節(jié)讀,效力孰高孰低1目了然。有兩個特殊的輸入流實現(xiàn)了緩沖功能,1個是我們經(jīng)常使用的BufferedInputStream.)

 

Java代碼  收藏代碼
  1. package com.hxw.io;  
  2. import java.io.*;  
  3.    
  4. public class FileCopy {  
  5.    
  6.   public static void main(String[] args) {  
  7.      // TODO自動生成的方法存根  
  8.      byte[] buffer=new byte[512];   //1次取出的字節(jié)數(shù)大小,緩沖區(qū)大小  
  9.      int numberRead=0;  
  10.      FileInputStream input=null;  
  11.      FileOutputStream out =null;  
  12.      try {  
  13.         input=new FileInputStream("D:/David/Java/java 高級進階/files/tiger.jpg");  
  14.         out=new FileOutputStream("D:/David/Java/java 高級進階/files/tiger2.jpg"); //如果文件不存在會自動創(chuàng)建  
  15.          
  16.         while ((numberRead=input.read(buffer))!=-1) {  //numberRead的目的在于避免最后1次讀取的字節(jié)小于buffer長度,  
  17.            out.write(buffer, 0, numberRead);       //否則會自動被填充0  
  18.         }  
  19.      } catch (final IOException e) {  
  20.         // TODO自動生成的 catch 塊  
  21.         e.printStackTrace();  
  22.      }finally{  
  23.         try {  
  24.            input.close();  

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 寡妇一级毛片免费看 | 久久久精品一区二区 | 一区二区蜜桃 | 成人自拍视频在线 | 国产91精品一区二区 | 日韩一区二区免费看 | 色欧美日韩 | 中文字幕国产在线 | 国产成人在线视频 | 国产精品一区二区三区不卡 | 亚洲在线一区二区三区 | 欧美成人免费电影 | 一级做a爱片性色毛片www | 一极黄色大片 | 欧美国产日韩在线观看 | 亚洲色图 欧美 | 国产成人精品综合 | 2023av在线视频 | yw193com尤物 | 国产精品高清一区二区 | 日韩av免费在线观看 | 日韩精品1区 | 午夜av一区 | 99久久综合狠狠综合久久 | 国产精品美女久久久久人 | 精品成人av| 精品国产乱码久久久久久牛牛 | 综合久久婷婷 | 日韩av电影在线免费观看 | 偷拍视频一区二区 | 亚洲视频区 | av大片免费看 | 国产精品99久久久 | 国产成人精品免高潮在线观看 | 99久久久久久 | 欧美精品在线一区二区三区 | 男女交配视频网站 | 一区二区三区 欧美 | 爱爱视频网站 | 久久久com | av中文字幕一区二区 |