Javaツールクラス:様々な方法でファイルを読み込む

8318 ワード

1.ファイルの内容をバイト単位で、文字単位で、ファイルの内容を行単位で、ファイルの内容をランダムに読み取る
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   void  main(String[] args) {
        String fileName  =   " C:/temp/newTemp.txt " ;
        ReadFromFile.readFileByBytes(fileName);
        ReadFromFile.readFileByChars(fileName);
        ReadFromFile.readFileByLines(fileName);
        ReadFromFile.readFileByRandomAccess(fileName);
    }
}

 

2、ファイルの末尾に内容を追加する
public   class  AppendToFile {
     /**
     * A      :  RandomAccessFile
      */
     public   static   void  appendMethodA(String fileName, String content) {
         try  {
             //             ,     
            RandomAccessFile randomFile  =   new  RandomAccessFile(fileName,  " rw " );
             //      ,   
             long  fileLength  =  randomFile.length();
             //            。
            randomFile.seek(fileLength);
            randomFile.writeBytes(content);
            randomFile.close();
        }  catch  (IOException e) {
            e.printStackTrace();
        }
    }

     /**
     * B      :  FileWriter
      */
     public   static   void  appendMethodB(String fileName, String content) {
         try  {
             //         ,           true          
            FileWriter writer  =   new  FileWriter(fileName,  true );
            writer.write(content);
            writer.close();
        }  catch  (IOException e) {
            e.printStackTrace();
        }
    }

     public   static   void  main(String[] args) {
        String fileName  =   " C:/temp/newTemp.txt " ;
        String content  =   " new append! " ;
         //    A    
        AppendToFile.appendMethodA(fileName, content);
        AppendToFile.appendMethodA(fileName,  " append end. /n " );
         //       
        ReadFromFile.readFileByLines(fileName);
         //    B    
        AppendToFile.appendMethodB(fileName, content);
        AppendToFile.appendMethodB(fileName,  " append end. /n " );
         //       
        ReadFromFile.readFileByLines(fileName);
    }
} 

からhttp://www.open-open.com/lib/view/open1390525817211.html】