ゞ沉默是金ゞ

          魚離不開水,但是沒有說不離開哪滴水.
          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 {
              
          /**
               * 以字節為單位讀取文件,常用于讀二進制文件,如圖片、聲音、影像等文件。
               
          */

              
          public static void readFileByBytes(String fileName) {
                  File file 
          = new File(fileName);
                  InputStream in 
          = null;
                  
          try {
                      System.out.println(
          "以字節為單位讀取文件內容,一次讀一個字節:");
                      
          // 一次讀一個字節
                      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(
          "以字節為單位讀取文件內容,一次讀多個字節:");
                      
          // 一次讀多個字節
                      byte[] tempbytes = new byte[100];
                      
          int byteread = 0;
                      in 
          = new FileInputStream(fileName);
                      ReadFromFile.showAvailableBytes(in);
                      
          // 讀入多個字節到字節數組中,byteread為一次讀入的字節數
                      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) {
                          }

                      }

                  }

              }


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

              
          public static void readFileByChars(String fileName) {
                  File file 
          = new File(fileName);
                  Reader reader 
          = null;
                  
          try {
                      System.out.println(
          "以字符為單位讀取文件內容,一次讀一個字節:");
                      
          // 一次讀一個字符
                      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(
          "以字符為單位讀取文件內容,一次讀多個字節:");
                      
          // 一次讀多個字符
                      char[] tempchars = new char[30];
                      
          int charread = 0;
                      reader 
          = new InputStreamReader(new FileInputStream(fileName));
                      
          // 讀入多個字符到字符數組中,charread為一次讀取字符數
                      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(
          "以行為單位讀取文件內容,一次讀一整行:");
                      reader 
          = new BufferedReader(new FileReader(file));
                      String tempString 
          = null;
                      
          int line = 1;
                      
          // 一次讀入一行,直到讀入null為文件結束
                      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) {
                          }

                      }

                  }

              }


              
          /**
               * 隨機讀取文件內容
               
          */

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

                      }

                  }

              }


              
          /**
               * 顯示輸入流中還剩的字節數
               
          */

              
          private static void showAvailableBytes(InputStream in) {
                  
          try {
                      System.out.println(
          "當前字節輸入流中的字節數為:" + 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
          主站蜘蛛池模板: 郴州市| 克东县| 屏边| 罗甸县| 大兴区| 崇仁县| 崇义县| 余庆县| 泗水县| 太康县| 建平县| 遵化市| 大渡口区| 碌曲县| 祁东县| 宁海县| 府谷县| 宁陵县| 西青区| 晋江市| 榆中县| 北宁市| 思南县| 遵化市| 三门峡市| 芦山县| 女性| 乌拉特后旗| 高阳县| 阿尔山市| 湖州市| 密山市| 兰西县| 巢湖市| 湖口县| 太和县| 西盟| 建水县| 临清市| 寻乌县| 容城县|