<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 5,  comments - 0,  trackbacks - 0
    IO

     

    Input / Output:指跨越出JVM的邊界,與外界數據的源頭或者目標數據源進行數據交換.

     

                        輸出  Output

          ------------------------------->

    JVM                                           數據源

          <-------------------------------

                        輸入   Input

    注意:輸入/輸出是針對JVM 而言。

    File

    可表示一個文件,也有可能是一個目錄(JAVA中文件和目錄都屬于這個類中,而且區分不是非常的明顯,可以調用isDirectory()isFile()來判斷)。

    常用的方法:

          exists()       用來判斷 文件或目錄是否存在。

          isDirectory()      判斷是否是目錄

          isFile()              判斷是否是文件

          mkdir()             創建目錄

          mkdirs()           創建目錄包括它下面的子目錄。

          getAbsolutePath()      得到文件絕對路徑

          getParentFile() 得到父目錄的File對象

          list()                 得到文件名的String數組 (得到當前目錄下的文件名,目錄名)

          listFiles()           返回File類型數組,(目錄,文件的File對象)可用getName()得到文件名。

          delete()      刪除文件

          getName()         得到文件名

          getPath()           得到文件相對路徑

          separtor()          得到文件分隔符 //這個方法有更好的通用性,平臺不同結果不同

          deleteOnExit()    在進程退出的時候刪除文件,常用在臨時文件的刪除。

    1、流的概念:

                 輸出流

          程序----------->文件、網絡

          程序<-----------數據來源  

               輸入流

    2、流的分類:

          按處理方式來分:

               字節流:按8位傳輸 InputStream OutputStream

               字符流:按16位傳輸 Reader  Writer

          按功能來分:

               節點流:與文件、網絡打交道的流,操作數據的來源

               處理流(包裝流):操作節點流

          如何區分:       

               輸入流:以InputStreamReader結尾的流

                          FileInputStream   BufferedReader

               輸出流:以OutputStream、Writer結尾的流

                          FileOutputStream PrintWriter

               字節流:以InputStream、OutputStream結尾的流

               字符流:以Reader、Writer結尾的流

               節點流:看構造器,參數為數據來源,參數是StringFile之類的

                          new FileInputStream("d:\\abc.txt");

                          new FileOutputStream(new File("d:\\abc.txt"))

               處理流:構造器的參數為其它流

                          new BufferedReader(new InputStreamReader(new FileInputStream("d:\\abc.txt")));

          選擇流時:

               首先確定是輸入還是輸出。

               其次確定是字節流還是字符流。

               然后確定是節點流還是處理流。

          根據數據類型選擇輸入/輸出流:

               ①byte、byte[]   InputStream / OutputStream

               ②intbyte、chardouble     DataInputStream / DataOutputStream

               ③char、String    Reader / Writer

               ④Object           ObjectInputStream / ObjectOutputStream

               若考慮性能會在前試著加Buffered

    3、常用流:

          DataInputStream&DataOutputStream 用于讀寫基本類型數據,如int、float、long、doubleboolean等。

          此外,DataInputStreamreadUTF()方法還能讀取采用UTF-8字符編碼的字符串。

         

          BufferedInputStream&BufferedOutputStream

          因為利用了緩沖區,所以常用于提高讀寫數據的效率。

          BufferedInputStream先把一批數據讀入到緩沖區,接下來read方法只需要從緩沖區內獲得數據,減少了物理性讀取數據的次數。

          可以使用BufferedInputStream(InputStream in, int size) 中的size來指定緩沖區的大小

     

          ObjectOutputStream&ObjectInputStream

          對象的序列化是指把對象寫到一個輸出流中,

          對象的反序列化是指從一個輸入流中讀取一個對象。

          Java語言要求只有實現了java.io.Serializable接口的類的對象才能序列化和反序列化

     

          Reader/Writer

          當需要程序讀寫文本文件,而且文本文件采用特定的字符編碼集時,應采用Reader/Writer。

          InputStreamReader & OutputStreamWriter 橋梁流

          把字節流轉換成字符流

          在橋轉換的時候可以指定編解碼方式

         

          BufferedReader

          readLine()方法可以一次讀入一行字符,以字符串形式返回。

          BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("file"),"UTF-8"));

          BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file"),"UTF-8"));

          PrintWriter 輸出格式化的數據,所有的寫數據的方法以print開頭。

          print (int i)

          print (long l)

          print (float f)

          print (String s)

         

          每個print() 方法都有一個println()方法對應

         

          a.

          printWriter.println("Hello");

          b.

          printWriter.print("Hello");

          printWriter.println();

          c.

          printWriter.print("Hello\n");

          以上三段代碼是等價的

    4、JAVA編碼問題:UTF-8,GBK,GB2312是可以顯示中文的。

          ASCII                一個字符-----1B     任何一種編碼均兼容   A<-->65

          ISO8859-1 (西歐)     一個字符-----1B

          GB2312 / GBK   一個字符-----2B

          Unicode       一個字符-----2B     會增加網絡負擔  Java中的charUnicode

          UTF-8        變長字節(變長的Unicode方式)

                     英文-----1B

                     中文-----3B

          提供編碼幫助的類:java.nio.charset.Charset

          GBK---中、日、韓,gb2312GBK的子集

     

          會出現中文編碼問題的情況:

               1、用流操作文件時

               2、網頁(動態、靜態)

               3、網絡傳遞信息時

          String--->亂碼(再次轉碼)

          String temp=p.getProperty("name");

          temp=new String(temp.getBytes("ISO8859-1"),"GBK");這兩處的編碼有時需要互換位置

    對象序列化

          1:定義:把對象作為一個整體,在I/O流中傳播

          2:語法:

          ()實現了Serializeble接口的對象才能可序列化。這個接口里沒有任何方法,沒有方法的接口稱為標記接口。

          例如:class Student implements Serializeble{} 

          ()如果一個序列化后的對象里面有一個屬性是個對象屬性,那么這個對象屬性也需要實現序列化。

          例如:class Student implements Serializeble{

               Teacher t;//必須序列化

               }

               class Teacher implements Serializeble{}

          (3)包名、類名、屬性可以被序列化

          方法、構造器不會序列化

          所有的靜態屬性都不會被序列化

          transient關鍵字修飾的屬性是臨時屬性,臨時屬性不參與序列化。

          3:使用注意:

          a.readObject讀文件的時候,當文件結束的時候會拋出EOFException,當我們捕獲這個異常的時候,程序就結束了。

          b.如果需要向一個文件中追加對象,首先要把文件中原有的對象讀出來,再把原有對象和新追加的對象一起寫入到文件。     

          c. serialVersionUID是靜態常量,表示當前對象的版本號,在接受傳輸的數據時會自動檢查該值,保證版本的相同。

    java.util.Properties屬性類,針對屬性文件操作,早期使用。

          好處是可以在不修改代碼的情況下改變相應的需求。

          文件名以.properties結尾的文件稱為屬性文件

          文件的內容是:名字= 的形式

          常用方法:  

               public void load(InputStream inStream)throws IOException

               從輸入流中讀取屬性列表

               public void store(OutputStream out,String comments)throws IOException

               把屬性列表寫入輸出流

               public String getProperty(String key)

               public String getProperty(String key,String defaultValue)

               public Object setProperty(String key,String value)

    posted on 2009-03-31 19:40 faye 閱讀(194) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产亚洲成av人片在线观看| 亚洲精品偷拍视频免费观看| 福利免费在线观看| 免费99热在线观看| 精品一区二区三区免费毛片爱| 亚洲手机中文字幕| 亚洲人成无码网站久久99热国产| 好吊色永久免费视频大全| 亚洲av永久无码精品表情包| 久久久免费精品re6| 国产精品美女免费视频观看| 亚洲Av永久无码精品黑人| 亚洲精品免费在线视频| 好爽又高潮了毛片免费下载| 永久免费在线观看视频| 精品国产麻豆免费人成网站| 亚洲va成无码人在线观看| 伊人久久综在合线亚洲2019| 亚洲成AV人片一区二区密柚| 亚洲综合AV在线在线播放| 亚洲伊人久久综合中文成人网| 国产免费人成在线视频| 无码日韩精品一区二区免费暖暖 | 丁香六月婷婷精品免费观看| 亚洲av成人一区二区三区在线播放| 亚洲免费网站在线观看| 亚洲乱码在线播放| 亚洲高清无在码在线电影不卡| 亚洲国产成人久久精品动漫| 日本xxwwxxww在线视频免费| 免费精品一区二区三区第35| 插鸡网站在线播放免费观看| aa午夜免费剧场| 国产精品高清免费网站| 久久九九久精品国产免费直播| 久久不见久久见免费影院www日本| 国产免费久久精品99久久| 国产免费A∨在线播放| 中文字幕一区二区三区免费视频| 中国人免费观看高清在线观看二区| 国产一级a毛一级a看免费人娇|