在文件里增加一行的唯一方法就是读取原始文件,然后写入到一个临时文件,同时写入要插入的数据。然后删除原始文件,再把临时文件改名为原始文件名。
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);
}
}
分享到:
相关推荐
// 解析和处理每一行 } ``` 5. **解析并入库** 对于每行数据,我们可以根据业务需求进行解析。这可能涉及到JSON、CSV或其他格式的解析。例如,如果数据是CSV格式,可以使用`java.util.StringTokenizer`或`java....
最后,将读取CSV文件和插入数据的过程结合起来,遍历CSV文件中的所有行,对每一行调用`importCSVToDatabase()`函数: ```java public static void main(String[] args) { // ... while ((record = reader.read...
循环插入表格涉及到更复杂的操作,因为我们需要创建XWPFTable对象,设置列数和行数,然后在每一行添加XWPFTableCell。假设我们有一个数据列表,我们可以在遍历列表的过程中创建表格: ```java public void ...
1. Java文件操作:使用`java.io.File`类进行文件操作,筛选特定类型的文件。 2. TXT文档读取:使用`BufferedReader`和`FileReader`读取TXT文件内容。 3. JDBC数据库操作:加载数据库驱动,建立连接,执行SQL语句进行...
本项目“Java利用poi对word插入文字图片”是一个具体的示例,旨在教给你如何使用Apache POI API在Word文档中插入文字和图片。下面将详细阐述相关的知识点。 首先,Apache POI提供了HWPF(Horrible Word Processor ...
在本主题中,我们将深入探讨如何使用Java POI流处理Word模板,插入文本、表格和图片,以及生成新的Word报告。 1. **Java POI流处理Word模板**: - POI API提供了`XWPFDocument`类来处理`.docx`文件,这是Word 2007...
在Java编程领域,将网络文件下载到本地并将其数据存储到数据库是一项常见的任务。这个"Java获取网络文件并插入数据库.rar"压缩包可能包含了实现这一功能的代码示例或者详细教程。下面,我们将深入探讨这一过程涉及的...
这段代码会创建一个名为"testCreateExcel.xlsx"的Excel文件,其中包含一个工作表,第一行第一列的单元格值为“Hello, Excel!”。 更复杂的操作,如设置单元格格式、合并单元格、插入图片、读取数据等,都可以通过...
标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...
综上所述,Java大文件IP统计涉及的主要知识点有:Java文件I/O,流式处理,IP地址的处理与比较,数据结构(如HashMap和TreeMap)的选择,以及可能的并发和分布式计算。通过这些技术,我们可以高效地处理大文件中的IP...
这段代码将在文件末尾追加新的内容,并确保在每一行之间插入换行符。 4. **处理回车换行**: 在不同的操作系统中,换行符可能有所不同。在Windows上,换行通常表示为`\r\n`,而在Linux或Mac上则为`\n`。为了确保...
1. **读取CSV**:使用Java读取CSV文件,解析每一行的数据,可能需要创建一个数据模型类来存储解析后的数据。 2. **数据转换**:根据数据结构,将CSV数据转换为Neo4j可以理解的格式。例如,将CSV中的行转化为节点或...
Java 读写 CSV 文件是指使用 Java 语言来读取和写入 CSV 文件,CSV 文件是一种常用的数据文件格式,逗号分隔的文本文件,默认可以用 Office 软件打开。CSV 文件可以包含各种特殊字符的处理信息,如对包含特殊字符的...
- **内存消耗低:** EasyExcel使用流式处理的方式读取Excel文件,只在内存中保存一行数据,从而大大降低了内存消耗。 - **高性能:** 通过对内部算法的优化,EasyExcel能够快速地处理大量的Excel数据。 - **扩展性强...
配合`Java.jpg`这个图片文件,可能是为了说明如何在Excel中插入图片。 总之,通过Apache POI库,Java程序员可以方便地创建、编辑和操作Excel文件,满足各种业务需求。学习和掌握这一技能,将有助于提升你在数据处理...
我们可以使用`BufferedReader`来读取文件,并通过`split()`方法分割每一行数据,然后将这些数据存储在对象或列表中,例如: ```java List[]> dataRows = new ArrayList(); try (BufferedReader br = new ...
例如,插入一条数据到`testAPI`表的`cf1`列簇中: ```java Put put = new Put(Bytes.toBytes("rowKey")); put.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("qualifier"), Bytes.toBytes("value")); admin.get...
在Java编程环境中,生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或导出时。在本场景中,我们使用了jxl.jar库来完成这个功能。jxl是一个开源的Java库,它允许开发者读取、写入和修改Excel文件(.xls...
Java POI 是一个开源项目,专门用于处理Microsoft Office文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)等。在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定...
以下代码展示了如何替换文件中的第一行: ```java public static void replaceTxtByStr(String oldStr, String replaceStr) { String temp; try { File file = new File(path); FileInputStream fis = new ...