程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 使用Java在文件裡插入一行

使用Java在文件裡插入一行

編輯:關於JAVA

在文件裡增加一行的唯一方法就是讀取原始文件,然後寫入到一個臨時文件,同時寫入要插入的數據。然後刪除原始文件,再把臨時文件改名為原始文件名。

package net.java2000.io;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
/**
* 給文件增加一行數據。
*
* @author 趙學慶,Java世紀網(java2000.net)
*
*/
public class FileInsertRow {
 public static void main(String args[]) {
  try {
   FileInsertRow j = new FileInsertRow();
   j.insertStringInFile(new File(args[0]), Integer.parseInt(args[1]), args[2]);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 /**
  * 在文件裡面的指定行插入一行數據
  *
  * @param inFile
  *     文件
  * @param lineno
  *     行號
  * @param lineToBeInserted
  *     要插入的數據
  * @throws Exception
  *      IO操作引發的異常
  */
 public void insertStringInFile(File inFile, int lineno, String lineToBeInserted)
   throws Exception {
  // 臨時文件
  File outFile = File.createTempFile("name", ".tmp");
  // 輸入
  FileInputStream fis = new FileInputStream(inFile);
  BufferedReader in = new BufferedReader(new InputStreamReader(fis));
  // 輸出
  FileOutputStream fos = new FileOutputStream(outFile);
  PrintWriter out = new PrintWriter(fos);
  // 保存一行數據
  String thisLine;
  // 行號從1開始
  int i = 1;
  while ((thisLine = in.readLine()) != null) {
   // 如果行號等於目標行,則輸出要插入的數據
   if (i == lineno) {
    out.println(lineToBeInserted);
   }
   // 輸出讀取到的數據
   out.println(thisLine);
   // 行號增加
   i++;
  }
  out.flush();
  out.close();
  in.close();
  // 刪除原始文件
  inFile.delete();
  // 把臨時文件改名為原文件名
  outFile.renameTo(inFile);
 }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved