java---2

來源:互聯網
上載者:User

標籤:writer   ast   code   inpu   utf-8   modified   nts   class   多個   

  今天打算過一遍java的io,主要是關注檔案方面,當然還有什麼zip之類的。

  io顧名思義就是輸入和輸出,根據操作的類型分為輸入資料流和輸出資料流,感覺流是一種通道,它給各種資料呀,檔案呀提供通道。本身還是可以理解的。在java中,所有的io的操作基本放在java.io中,所有的輸入資料流都是抽象類別InputStream和Reader的子類,前者是位元組輸入資料流,後者則是字元輸入資料流。與此對應的還有OutputStream和Writer抽象類別。位元組流讀取的時候,讀到一個位元組就返回一個位元組;  字元流使用了位元組流讀到一個或多個位元組(中文對應的位元組數是兩個,在UTF-8碼錶中是3個位元組)時。先去查指定的編碼錶,將查到的字元返回。位元組流可以處理所有類型資料,而字元流只能處理字元資料。只要是處理純文字資料,就要優先考慮使用字元流,除此之外都用位元組流。

  File類是唯一代表磁碟檔案本身的對象。通過調用File類中的方法,實現建立(createNewFile()),刪除(delete()),重新命名檔案等操作。同時此類提供了許多方法用來擷取一些檔案本身的資訊,如判斷檔案是否存在(exits()),擷取檔案長度(length()),最後修改時間(lastModified())。

  當需要將資料永久儲存時,就需要使用檔案輸入輸出資料流與指定檔案建立串連。FileInputStream和FileOutputStream都用來操作磁碟檔案,前面說了這兩個類都是對位元組的操作,都只提供了對位元組和位元組數組的讀取方法,由於漢字在檔案中是佔兩個位元組的,那麼如果用這兩個類讀取漢字文本時,極大可能性會出現亂碼現象。所以對於這種現象,我們應當採用FileReader和FileWriter類。FileReader流順序地讀取檔案,只要不關閉流,每次調用read就順序地讀取源中其餘的內容,直到被close。

  雖然在程式結束時自動關閉所有開啟的流,但是在使用完流後,主動close仍然是一個好習慣,一個被開啟的流可能會佔盡系統資源,如果沒有將開啟的流關閉,當另一個程式試圖開啟另一個流時,可能會得不到需要的資源。

public class FileTest{  public static void main(String[] args){   File file=new File("word.txt");   try{       FileOutputStream a=new FileOutputStream(file);       byte buy[]="你好java".getBytes();       a.write(buy);       a.close();    }catch(Excetion e){       e.printStackTrace();    }    try{       FileInputStream b=new FileInputStream(file);       byte by[]=new byte[1024];       int h=b.read(by);       System.out.println(new String(by,0,h));       b.close();    }catch(Excetion e){       e.printStackTrace();    } }}
File f=new File("d:\\hah.txt");        if(!f.exists()){            try {                f.createNewFile();            } catch (IOException e) {                // TODO 自動產生的 catch 塊                e.printStackTrace();            }        }else{            System.out.println("哈皮");        }

我在這裡寫這個的原因是因為我當初非常愚蠢的一段經曆,我寫了這兩個測試程式,然後在思考一個問題。。為什麼第一個程式沒用createNewFile就建立了真實檔案,難道File f=new File(...)就會建立真實檔案麼。。可是我清楚的記得,File只是建立一個映射對象,並不是建立一個真實的檔案,如果有這個功能,那還要createNewFile()幹什麼。。。原來是因為我第一個程式還用了FileOutputStream..在使用檔案輸出類時,如果檔案不存在,就會自動建立檔案,使用檔案輸入類時,如果檔案不存在,就會拋出異常IOException。很蠢。。但是當時想了好長時間。。。

java---2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.