Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 隨手記 讀寫文件的幾種方式

android 隨手記 讀寫文件的幾種方式

編輯:關於Android編程

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);  }  }  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved