多種方式讀取文件內容

import java.io.*;java

/**
 *
 * @author wxp
 * Created by Administrator on 2017/10/29 0029.
 */
public class ReadFromFile {
    public static final String DEPATH = "D:/test/deFile/test.jsp";
    public static final String IMAGEPATH = "C:\\Users\\Administrator\\Desktop\\logo.png";
   /*
   * 多種方式讀取文件內容
   * 一、按字節讀取文件內容
   * 二、按字符讀取文件內容
   * 三、按行讀取文件內容
   * 四、隨機讀取文件內容
   */windows

   //一、按字節讀取文件內容dom

    /**
    *
    * 以字節爲單位讀取文件,經常使用於讀二進制文件,如圖片、聲音、影像等文件
    * @param fileName 文件名
    * @return void
    */
    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.print(tempByte+"segment");
            }
            in.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }jsp

    //二、按字符讀取文件內容.net

    /**
    *
    * 以字符爲單位讀取文件,經常使用於讀文本,數字等類型的文件
    * @param fileName 文件名
    * @return void
    */
    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下,rn這兩個字符在一塊兒時,表示一次換行,如兩個字符分開時,表示兩次換行
                if((char)tempChar!='r'){
                System.out.print((char)tempChar);
                }
            }
            reader.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }圖片


    //三、按行讀取文件內容get

    /**
    *
    * 以行爲單位讀取文件,經常使用於讀面向行的格式化文件
    * @param fileName 文件名
    * @return void
    */
    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;
            while ((tempString=reader.readLine())!=null){
                    System.out.println("line"+line+":"+tempString);
                     line++;
            }
            reader.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }it

    //四、隨機讀取文件內容io

    /**
    *
    * @param fileName 文件名
    * @return void
    */
    public  static void readFileByRandomAccess(String fileName){
        RandomAccessFile randomAccessFile = null;
        try {
            System.out.println("隨機讀取一段文件內容:");
            //打開一個隨機訪問文件流,按只讀方式
            randomAccessFile = new RandomAccessFile(fileName,"r");
            //文件長度,字節數
            long fileLength = randomAccessFile.length();
            //將讀文件的開始位置
            int beginIndex = (fileLength>4)?4:0;
            //將讀文件的開始位置移到beginIndex位置
            randomAccessFile.seek(beginIndex);
            byte[] bytes =  new byte[10];
            int  byteRead = 0;
            //一次讀10個字節,若是文件內容不足10個字節,則讀剩下的字節。
            while ((byteRead = randomAccessFile.read(bytes))!=-1){
                System.out.write(bytes,0,byteRead);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (randomAccessFile!=null){
               try {
                   randomAccessFile.close();
               }catch (Exception e){
                   e.printStackTrace();
               }class

            }
        }
    }

    public static void main(String[] args){
//        readFileByBytes(IMAGEPATH);
//        readFileByChars(DEPATH);
//        readFileByLines(DEPATH);
        readFileByRandomAccess(DEPATH);
    }

}

注:僅供分享,內容參照其餘學者

相關文章
相關標籤/搜索