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);
}
}
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;/**
PrintWriter类是首选的用于写入一个文本
文件
的流类。
1).IO
Exception
处理
文件
I/O时,程序很多时候可能会抛出某个类(如
File
NotFound
Exception
类)的异常,这些不同的异常类很多是IO
Exception
类的子孙类,IO
Exception
类是与输入和输出有关的各种异常类的根类。
2).PrintWrite类的方法
public PrintWriter(Out...
在
文件
里增加
一行
的唯一方法就是读取原始
文件
,然后写入到一个临时
文件
,同时写入要
插入
的
数据
。然后删除原始
文件
,再把临时
文件
改名为原始
文件
名。
package net.
java
2000.io;
import
java
.io.BufferedReader;
import
java
.io.
File
;
import
java
.io.
File
InputStream;
import
java
.io.
File
O...
要在csv
文件
中
指定
位置
插入
行
,可以使用pandas模块中的`read_csv()`和`to_csv()`方法。首先,使用`read_csv()`方法读取csv
文件
,并将其存储为pandas
数据
帧。然后,使用pandas
数据
帧的`iloc[]`方法,在
指定
索引位置
插入
新
行
。最后,使用`to_csv()`方法将修改后的
数据
帧保存回csv
文件
中。
下面是一个示例代码,其中在csv
文件
的第3
行
插入
新
行
:
``` python
import pandas as pd
# 读取csv
文件
df = pd.read_csv('data.csv')
# 在第3
行
之后
插入
新
行
new_row = pd.DataFrame({'col1': 'value1', 'col2': 'value2', 'col3': 'value3'}, index=[2.5])
df = pd.concat([df.iloc[:2], new_row, df.iloc[2:]]).reset_index(drop=True)
# 保存修改后的
数据
帧到csv
文件
df.to_csv('data.csv', index=False)
在这个例子中,新
行
被定义为一个带有三个列的pandas
数据
帧,并使用`index`参数
指定
在第3
行
之后
插入
新
行
。然后使用`concat()`方法将新
行
与原始
数据
帧合并,并使用`reset_index()`方法重置索引。最后,使用`to_csv()`方法将修改后的
数据
帧保存回csv
文件
中,`index=False`参数表示不保存索引。