中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中讀文件的方式介紹

發布時間:2021-08-25 18:40:06 來源:億速云 閱讀:129 作者:chen 欄目:編程語言

本篇內容介紹了“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);
}
}

“java中讀文件的方式介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

政和县| 六安市| 蛟河市| 丹阳市| 伊宁县| 平塘县| 齐齐哈尔市| 临夏县| 兴国县| 西安市| 丹东市| 公安县| 曲麻莱县| 舞阳县| 福贡县| 宁化县| 南宁市| 莆田市| 德庆县| 万州区| 平江县| 扶沟县| 湖北省| 明溪县| 桐城市| 通辽市| 汽车| 景泰县| 台北县| 宜川县| 安阳市| 阿拉善盟| 吐鲁番市| 金平| 福州市| 大新县| 睢宁县| 靖边县| 秦皇岛市| 全州县| 岐山县|