`
gstarwd
  • 浏览: 1495366 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用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);
     }
   }
分享到:
评论

相关推荐

    java按行读取大文件并解析入库

    java按行读取大容量文本文件,并按行解析入库。使用java.nio下面的相关方法

    java读写csv文件

    Java 读写 CSV 文件是指使用 Java 语言来读取和写入 CSV 文件,CSV 文件是一种常用的数据文件格式,逗号分隔的文本文件,默认可以用 Office 软件打开。CSV 文件可以包含各种特殊字符的处理信息,如对包含特殊字符的...

    java根据word模板导出Word文件,插入图片表格都可以

    网络上的根据模板填充Word我都看过一些, 它们的功能在数据换行的时候用的是run对象的.addCarriageReturn()方法,或者是直接用\n实现换行。这些都不符合我的需求, 因为我要的是分段,而不是换行。换行的word导致另一...

    JAVA WEB框架,java网站一个模块只用写一个文件

    |___SzdwServlet.java 用户自己写的servlet,在public class 上面一行有如下说明:@WebServlet(name = "SzdwServlet", urlPatterns = {"/Szdw.jsp"})告诉tomcat这个servlet的名字和路径。 框架流程详解: 用户请求...

    poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行

    NULL 博文链接:https://gojava1.iteye.com/blog/750718

    Java读取PDF查找指定文字位置,并添加悬浮图片(文档签字/盖章)

    对pdf文件进行读取,根据传入的文字去寻找指定位置信息,根据位置信息添加图片,其中样式格式可自定义,具体可查看jar包的操作文档,地址可百度。实现签字或者盖章操作,文件中包括源码和架包。

    java jdk实列宝典 光盘源代码

    java为数据结构中的列表定义了一个接口类java.util.list同时提供了3个实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口...

    完全免费的Java/jsp开发编辑工具FirstJava2

    对初学者来说,使用方法过于复杂,如果你编译200个java文件,编译速度太慢,需要好长时间. Eclipse和Jbuild编辑辅助方式,显示的内容太多了,眼都看花了. 当你使用FirstJava2你会发现,它速度很快,功能简单,管用,反应敏捷,...

    java 面试题 总结

    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session ...

    Java课件以及代码

    Java程序的元素之间可插入任意数量的空白,编译器将忽略掉多余的空白  程序中除了加入适当的空白外,还应使用缩进格式,使得同一层语句的起始列位置相同 不提倡的程序风格  一种不好的风格 class Point {int x,y...

    FirstJava2完全教材

    对初学者来说,使用方法过于复杂,如果你编译200个java文件,编译速度太慢,需要好长时间. Eclipse和Jbuild编辑辅助方式,显示的内容太多了,眼都看花了. 当你使用FirstJava2你会发现,它速度很快,功能简单,管用,反应敏捷,...

    Java小假期第一次作业

    并改正错误,提示:只有一行程序有错误,所以只能修改代码中的某一行程序。要求演示在eclipse开发环境下 单步调试程序,如果没有eclipse开发环境,也可以使用其它集成开发环境,但是必须演示调试能力。 2. ...

    Java核心技术II(第8版)

    第一章 流与文件 1.1 流 1.1.1 读入和写出字节 1.1.2 完整的流家族 1.1.3 组合流过滤器 1.2 文本输入与输出 1.2.1 如何写出文本输出 1.2.2 如何读入文本输入 1.2.3 以文本格式存储对象 1.2.4 字符集 1.3 读入和写出...

    java中导入导出Excel文件

    // 在Excel工作表中插入一行数据 Row row = sheet1.createRow((short) 0);//此处数字为在第几行插入数据,0表示工作表第1行,1表示第2行,以此类推 // Create a cell and put a value in it. //创建一个单元并把...

    itextpdf在已有pdf指定页及位置添加图片(包含jar及实例)

    在已有pdf文件中,指定页及绝对位置添加图片(包含itextpdf.jar及实例)

    Java基础测试题答案.doc

    在选择哪个选项不能插入到行 1 中,正确答案是 D、public class MyClass{ }。这是因为已经存在一个 public 类 Interesting,因此不能再添加另一个 public 类 MyClass。 Java 接口 在 Java 中,接口是抽象的,不能...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

Global site tag (gtag.js) - Google Analytics