<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 9, 文章 - 1, 評論 - 2, 引用 - 0
    數據加載中……

    java中多種方式讀文件

    一、多種方式讀文件內容。
    1、按字節讀取文件內容
    2、按字符讀取文件內容
    3、按行讀取文件內容
    4、隨機讀取文件內容
    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 {
    /**
    * 以字節為單位讀取文件,常用于讀二進制文件,如圖片、聲音、影像等文件。
    @param fileName 文件的名
    */

    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) {
    }

    }

    }

    }

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

    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這兩個字符在一起時,表示一個換行。
    //但如果這兩個字符分開顯示時,會換兩次行。
    //因此,屏蔽掉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) {
    }

    }

    }

    }

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

    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) {
    }

    }

    }

    }

    /**
    * 隨機讀取文件內容
    @param fileName 文件名
    */

    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) {
    }

    }

    }

    }

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

    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);
    }

    }


    二、將內容追加到文件尾部

    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.RandomAccessFile;

    /**
    * 將內容追加到文件尾部
    */

    public class AppendToFile {

    /**
    * A方法追加文件:使用RandomAccessFile
    @param fileName 文件名
    @param content 追加的內容
    */

    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
    @param fileName
    @param content
    */

    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);
    }

    }

     


    讀取一個文件的全部內容:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.RandomAccessFile;
    public class TestFile{    

    public static String getFileString(String filename)
    {
      FileInputStream fileinputstream
    =null
      String temp
    ="";  //文件內容
      try{
      
       fileinputstream 
    = new FileInputStream(filename);//讀取模塊文件
       int lenght = fileinputstream.available();
       System.out.println(lenght);
       
    byte bytes[] = new byte[lenght];
       fileinputstream.read(bytes);
       temp 
    = new String(bytes);   
       System.out.println(temp);
       System.out.println(
    "+++++++++++++++++++++++++++++++++++++++++++++++++++");
      }
    catch(Exception e){
          e.printStackTrace();
      }
    finally{
       
    try{
        
    if(fileinputstream!=null){
         fileinputstream.close();
        }

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

      }

      
    return temp;
    }


     
    public static void main(String [] args){
            
            String path
    ="C:/DCN-DAQ-SW-C3550-1[2007-08-08 14-01-42].log";
            TestFile testFile
    =new TestFile();
            testFile.getFileString(path);
            
        }

    }

    posted on 2007-08-08 17:45 趙貴陽 閱讀(597) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 国产大片线上免费观看 | 亚洲精品视频在线免费| 亚洲精品伊人久久久久| 亚洲免费观看视频| 免费一级黄色毛片| 免费看又爽又黄禁片视频1000| 久久国产乱子伦精品免费看| 特a级免费高清黄色片 | 91在线视频免费播放| 免费人成激情视频在线观看冫| 免费精品视频在线| 亚洲AV一区二区三区四区| 亚洲人成免费电影| 亚洲精品视频在线播放| 亚洲av中文无码乱人伦在线播放| 亚洲国产日韩在线观频| 国产免费观看黄AV片| 成年女人免费视频播放77777| h视频在线免费看| 99精品视频在线免费观看| 国产免费拔擦拔擦8X高清在线人| 国产人成网在线播放VA免费| 深夜A级毛片视频免费| 国产精品亚洲av色欲三区| 亚洲日韩精品无码专区| 国产亚洲精品影视在线| 亚洲jjzzjjzz在线播放| 久久久久久毛片免费播放| 97在线视频免费公开视频| 国产精品免费视频观看拍拍| 一区二区免费电影| 好湿好大好紧好爽免费视频| 国产美女视频免费观看的网站| a级毛片免费观看在线| 国产美女视频免费观看的网站| 中文字幕在线免费看| 免费在线黄色电影| 久久99青青精品免费观看| 777成影片免费观看| 亚洲一级毛片免费观看| 免费无码又爽又刺激聊天APP|