把困難踩在腳下

          迎難而上

           

          java I/O流

          在java中定義了多個流類:按照流的方向分為輸入流和輸出流;按照處理數據單位的不同分為字節流和字符流;按照處理的功能不同分為節點流和處理流。java中的流很多,但是常用的不多。最常用的java流有FileInputStream、FileOutputStream、FileReader、FileWriter。從input和output我們可以知道這四個流中誰是輸入流誰是輸出流,以Stream為后綴的為節點流,以Reader為后綴的為處理流。所謂處理流就是指在節點流或處理流上在套接一個流,節點流就好比是一個水管,處理流是比套在節點流這個水管上的更粗的水管。在處理流中最常用的還有BufferedReader和BufferedWriter。下面通過例子來看看這幾個流的功能:這幾個例子的注釋非常詳細,所以我就不多介紹了。

          先看一個有關文件的例子:

           

          package com.dr.inoutput; 

          import java.io.File;
          import java.io.IOException; 

          public class Demo0 {
              
          public static void main(String args[]) throws IOException
              
          {
          //        File f=new File("e:"+File.separator+"aa"+File.separator+"abc.txt");//在任何系統狀態下建立文件句柄
          //        File f=new File("e:\\aa\\abc.txt");//在windows系統下建立文件句柄
                  File f=new File("e:/aa/abc.txt");//適用于Unix系統
                  f.createNewFile();//創建文件
                  System.out.println(f.getName());//得到文件的名稱
                  System.out.println(f.getAbsolutePath());//得到文件的絕對路徑
                  System.out.println(f.isFile());//判斷文件是不是標準文件
                  System.out.println(f.isDirectory());//判斷文件是不是目錄
                  /*
                   * 判斷文件是否存在,如果存在則刪除,如果不存在則新建
                   
          */

                  
          if(f.exists())
                  
          {
                      f.delete();
                  }

                  
          else
                  
          {


                      f.createNewFile();
                  }

              }
           

          }
           

          看一個有關FileInputStream例子:

           

          package com.dr.inoutput; 

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.IOException;
          import java.io.InputStream; 

          public class Demo5 {
              
          public static void main(String args[])
              
          {
                  File f
          =new File("e:\\aa\\abc.txt");//將要從哪個文件中讀取數據就將哪個文件建立句柄
                  InputStream input=null;//創建輸入流(這個輸入流必須放在try括號的外面)
                  try {
                      input
          =new FileInputStream(f);//將輸入流指向要讀取的文件
                  }
           catch (FileNotFoundException e) {
                      e.printStackTrace();
                  }

                  
          byte str[]=new byte[1024];//創建字節數組,用來盛放從輸入流讀取的信息
                  int x=0;
                  
          int count=0;
                  
          for(int i=0;i<str.length;i++)
                  
          {
                      
          try {
                          
          if((x=input.read())!=-1)//判斷是否到文件尾,如果到文件尾就返回-1
                          {
                              str[i]
          =(byte)x;//因為x的值是int類型所以要進行數據轉換
                              count++;//用來計算讀入了多少個字節,以便下面進行操作
                          }

                          
          else
                          
          {
                              
          break;//如果到達文件尾就返回退出循環
                          }

                      }
           catch (IOException e) {
                          e.printStackTrace();
                      }

                  }

                  
          try {
                      input.close();
          //關閉輸入流
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  System.out.println(
          new String(str,0,count));//將字節數組轉換成字符串輸出
              }
           

          }
           

          關于FileOutputStream例子

           

          package com.dr.inoutput; 

          import java.io.File;
          import java.io.FileNotFoundException;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.OutputStream; 

          public class Demo4 {
              
          public static void main(String args[]) throws FileNotFoundException
              
          {
                  File f
          =new File("e:\\aa\\abc.txt");//向那個文件中寫入數據就顯得到這個文件的句柄
                  OutputStream out=new FileOutputStream(f);//新建一個通向f文件的輸出流
                  String xinxi="Hello 你好*****";//要輸出的信息
                  byte b[]=xinxi.getBytes();//將要輸出的信息轉換成字節數組
                  try {
                      out.write(b);
          //將信息寫入文件中
                  }
           catch (IOException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }

                  
          try {
                      out.close();
          //關閉輸出流
                  }
           catch (IOException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }

              }
           

          }
           

          關于FileReader的例子

           

          package com.dr.inoutput; 

          import java.io.File;
          import java.io.FileNotFoundException;
          import java.io.FileReader;
          import java.io.IOException;
          import java.io.Reader; 

          public class Demo7 {
              
          public static void main(String args[])
              
          {
                  File f
          =new File("e://aa//abcd.txt");//從哪個文件讀入數據,就獲得該文件的句柄
                  Reader in=null;//創建輸入流
                  try {
                      in
          =new FileReader(f);//將輸入流指向要從哪個文件讀入數據的我文件
                  }
           catch (FileNotFoundException e) {
                      e.printStackTrace();
                  }

                  
          //不能輸出漢字
                  byte[] str=new byte[1024];//建立字節數組用來存放讀入的數據
                  int x=0;
                  
          int count=0;
                  
          for(int i=0;i<str.length;i++)
                  
          {
                      
          try {
                          
          if((x=in.read())!=-1)//判斷是否到文件尾,如果到文件尾就返回-1
                          {
                              str[i]
          =(byte)x;
                              count
          ++;
                          }

                          
          else
                          
          {
                              
          break;
                          }

                      }
           catch (IOException e) {
                          e.printStackTrace();
                      }

                  }

                  
          try {
                      in.close();
                  }
           catch (IOException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }

                  System.out.println(count);
                  System.out.println(
          new String(str,0,count));
                  
          //可以輸出漢字
          //        char[] chr=new char[1024];
          //        int x1=0;
          //        try {
          //            x1=in.read(chr);
          //        } catch (IOException e) {
          //            e.printStackTrace();
          //        }
          //        System.out.println(new String(chr,0,x1));
          //        System.out.println(x1);
          //        try {
          //            in.close();
          //        } catch (IOException e) {
          //            // TODO Auto-generated catch block
          //            e.printStackTrace();
          //        }
              }
           

          }
           

          關于FileWriter的例子

           

          package com.dr.inoutput; 

          import java.io.File;
          import java.io.FileWriter;
          import java.io.IOException;
          import java.io.Writer; 

          public class Demo6 {
              
          public static void main(String args[])
              
          {
                  File f
          =new File("e:\\aa\\abcd.txt");//將要向哪個文件輸出信息就獲得哪個文件的句柄
                  String str="Hello 你好***";//要向文件輸出的字符串信息
                  char[] chr={'a','b','c','d'};//向文件輸出的字符數組信息
                  Writer out=null;//創建輸出流通道
                  try {
                      out
          =new FileWriter(f);//將輸出流通道指向要輸出的文件
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  
          try {
                      out.write(str);
          //將字符串數組的信息寫到文件中
                      out.write(str,2,4);//將字符串數組的一部分信息寫到文件中
                      out.write(chr);//將字符數組的信息寫到文件中
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  
          try {
                      out.close();
          //關閉輸出流
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

              }
           

          }
           

          關于BufferedReader的例子

           

          package com.dr.inoutput1; 

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader; 

          public class Demo1 {
              
          public static void main(String args[])
              
          {
                  BufferedReader buf
          =null;//創建緩沖輸入流,可以接受漢字
                  buf=new BufferedReader(new InputStreamReader(System.in));//將緩沖輸入流通道指向控制臺
                  String str=null;//盛放從控制臺接受到的信息
                  System.out.println("請輸入內容:");
                  
          try {
                      str
          =buf.readLine();
                      buf.close();
          //關閉輸出流
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  System.out.println(
          "輸出內容:"+str);
              }
           

          }
           

          java流有很多常用的也就這幾種。仔細想想其實他們有一個共點:

          獲得文件句柄

          建立通道

          讀\寫數據

          關閉通道

          posted on 2010-11-06 17:36 馮魁 閱讀(1229) 評論(0)  編輯  收藏


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


          網站導航:
           

          導航

          統計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學習網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宽城| 紫金县| 娄底市| 汶川县| 麻阳| 吉木乃县| 酉阳| 兴宁市| 兴城市| 城口县| 桂阳县| 关岭| 平罗县| 揭西县| 深州市| 同江市| 孟州市| 宝鸡市| 青河县| 海伦市| 庄河市| 修水县| 大渡口区| 隆子县| 平罗县| 汝城县| 黄梅县| 上蔡县| 永顺县| 集安市| 双柏县| 乐山市| 宜春市| 阿克陶县| 江门市| 白银市| 尼玛县| 封丘县| 清河县| 河南省| 甘孜县|