ゞ沉默是金ゞ

          魚離不開水,但是沒有說不離開哪滴水.
          posts - 98,comments - 104,trackbacks - 0
          讀取文件實例
          package org.duke.java.util;

          import java.io.BufferedReader;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileReader;
          import java.io.IOException;
          import java.io.InputStream;
          import java.io.InputStreamReader;
          import java.io.RandomAccessFile;
          import java.io.Reader;

          public class ReadFromFile {
              
          /**
               * 以字節(jié)為單位讀取文件,常用于讀二進制文件,如圖片、聲音、影像等文件。
               
          */

              
          public static void readFileByBytes(String fileName) {
                  File file 
          = new File(fileName);
                  InputStream in 
          = null;
                  
          try {
                      System.out.println(
          "以字節(jié)為單位讀取文件內(nèi)容,一次讀一個字節(jié):");
                      
          // 一次讀一個字節(jié)
                      in = new FileInputStream(file);
                      
          int tempbyte;
                      
          while ((tempbyte = in.read()) != -1{
                          System.out.write(tempbyte);
                      }

                      in.close();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                      
          return;
                  }

                  
          try {
                      System.out.println(
          "以字節(jié)為單位讀取文件內(nèi)容,一次讀多個字節(jié):");
                      
          // 一次讀多個字節(jié)
                      byte[] tempbytes = new byte[100];
                      
          int byteread = 0;
                      in 
          = new FileInputStream(fileName);
                      ReadFromFile.showAvailableBytes(in);
                      
          // 讀入多個字節(jié)到字節(jié)數(shù)組中,byteread為一次讀入的字節(jié)數(shù)
                      while ((byteread = in.read(tempbytes)) != -1{
                          System.out.write(tempbytes, 
          0, byteread);
                      }

                  }
           catch (Exception e1) {
                      e1.printStackTrace();
                  }
           finally {
                      
          if (in != null{
                          
          try {
                              in.close();
                          }
           catch (IOException e1) {
                          }

                      }

                  }

              }


              
          /**
               * 以字符為單位讀取文件,常用于讀文本,數(shù)字等類型的文件
               
          */

              
          public static void readFileByChars(String fileName) {
                  File file 
          = new File(fileName);
                  Reader reader 
          = null;
                  
          try {
                      System.out.println(
          "以字符為單位讀取文件內(nèi)容,一次讀一個字節(jié):");
                      
          // 一次讀一個字符
                      reader = new InputStreamReader(new FileInputStream(file));
                      
          int tempchar;
                      
          while ((tempchar = reader.read()) != -1{
                          
          // 對于windows下,\r\n這兩個字符在一起時,表示一個換行。
                          
          // 但如果這兩個字符分開顯示時,會換兩次行。
                          
          // 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。
                          if (((char) tempchar) != '\r'{
                              System.out.print((
          char) tempchar);
                          }

                      }

                      reader.close();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

                  
          try {
                      System.out.println(
          "以字符為單位讀取文件內(nèi)容,一次讀多個字節(jié):");
                      
          // 一次讀多個字符
                      char[] tempchars = new char[30];
                      
          int charread = 0;
                      reader 
          = new InputStreamReader(new FileInputStream(fileName));
                      
          // 讀入多個字符到字符數(shù)組中,charread為一次讀取字符數(shù)
                      while ((charread = reader.read(tempchars)) != -1{
                          
          // 同樣屏蔽掉\r不顯示
                          if ((charread == tempchars.length) && (tempchars[tempchars.length - 1!= '\r')) {
                              System.out.print(tempchars);
                          }
           else {
                              
          for (int i = 0; i < charread; i++{
                                  
          if (tempchars[i] == '\r'{
                                      
          continue;
                                  }
           else {
                                      System.out.print(tempchars[i]);
                                  }

                              }

                          }

                      }


                  }
           catch (Exception e1) {
                      e1.printStackTrace();
                  }
           finally {
                      
          if (reader != null{
                          
          try {
                              reader.close();
                          }
           catch (IOException e1) {
                          }

                      }

                  }

              }


              
          /**
               * 以行為單位讀取文件,常用于讀面向行的格式化文件
               
          */

              
          public static void readFileByLines(String fileName) {
                  File file 
          = new File(fileName);
                  BufferedReader reader 
          = null;
                  
          try {
                      System.out.println(
          "以行為單位讀取文件內(nèi)容,一次讀一整行:");
                      reader 
          = new BufferedReader(new FileReader(file));
                      String tempString 
          = null;
                      
          int line = 1;
                      
          // 一次讀入一行,直到讀入null為文件結(jié)束
                      while ((tempString = reader.readLine()) != null{
                          
          // 顯示行號
                          System.out.println("line " + line + "" + tempString);
                          line
          ++;
                      }

                      reader.close();
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }
           finally {
                      
          if (reader != null{
                          
          try {
                              reader.close();
                          }
           catch (IOException e1) {
                          }

                      }

                  }

              }


              
          /**
               * 隨機讀取文件內(nèi)容
               
          */

              
          public static void readFileByRandomAccess(String fileName) {
                  RandomAccessFile randomFile 
          = null;
                  
          try {
                      System.out.println(
          "隨機讀取一段文件內(nèi)容:");
                      
          // 打開一個隨機訪問文件流,按只讀方式
                      randomFile = new RandomAccessFile(fileName, "r");
                      
          // 文件長度,字節(jié)數(shù)
                      long fileLength = randomFile.length();
                      
          // 讀文件的起始位置
                      int beginIndex = (fileLength > 4? 4 : 0;
                      
          // 將讀文件的開始位置移到beginIndex位置。
                      randomFile.seek(beginIndex);
                      
          byte[] bytes = new byte[10];
                      
          int byteread = 0;
                      
          // 一次讀10個字節(jié),如果文件內(nèi)容不足10個字節(jié),則讀剩下的字節(jié)。
                      
          // 將一次讀取的字節(jié)數(shù)賦給byteread
                      while ((byteread = randomFile.read(bytes)) != -1{
                          System.out.write(bytes, 
          0, byteread);
                      }

                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }
           finally {
                      
          if (randomFile != null{
                          
          try {
                              randomFile.close();
                          }
           catch (IOException e1) {
                          }

                      }

                  }

              }


              
          /**
               * 顯示輸入流中還剩的字節(jié)數(shù)
               
          */

              
          private static void showAvailableBytes(InputStream in) {
                  
          try {
                      System.out.println(
          "當前字節(jié)輸入流中的字節(jié)數(shù)為:" + in.available());
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

              }


              
          public static vo id main(String[] args) {
                  String fileName 
          = "C:/Shawn/test.txt";
                  ReadFromFile.readFileByBytes(fileName);
                  ReadFromFile.readFileByChars(fileName);
                  ReadFromFile.readFileByLines(fileName);
                  ReadFromFile.readFileByRandomAccess(fileName);
              }

          }

          posted on 2012-07-03 19:07 ゞ沉默是金ゞ 閱讀(797) 評論(0)  編輯  收藏 所屬分類: Java SE
          主站蜘蛛池模板: 怀柔区| 马边| 福鼎市| 农安县| 陵水| 高碑店市| 瑞金市| 庆安县| 曲阳县| 延川县| 武隆县| 余姚市| 家居| 定陶县| 勃利县| 晴隆县| 郑州市| 井陉县| 肥城市| 华池县| 定南县| 蒙阴县| 那曲县| 蒙自县| 安多县| 元朗区| 武乡县| 长垣县| 安陆市| 宝兴县| 沙雅县| 吉木乃县| 勃利县| 塘沽区| 玛纳斯县| 卢湾区| 唐山市| 麻城市| 嘉善县| 巴青县| 肇东市|