如何用java实现:我现在已经实现从控制台读取一个文本文件,问题是要在控制台输入对应的行号,

删除文本文件中,行号所对应的内容,如何实现,求大侠指点!... 删除文本文件中,行号所对应的内容,如何实现,求大侠指点! 展开
 我来答
lylegend13
2011-11-03 · TA获得超过4696个赞
知道大有可为答主
回答量:1701
采纳率:0%
帮助的人:1729万
展开全部
你好,我按照你的要求写的如下代码,并给足了注释,可以直接运行
简单说下原理:先获得要删除的行号。按行读取原文件内容,并按行写到新的临时文件;如果遇到要删的行,就不写。最后删除原文件,临时文件改名。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class test {
public static void main(String[] args) throws IOException {
// 获得输入的要删除的行号,如果是多个,可以用循环
Scanner scanner = new Scanner(System.in);
int rowToDel = scanner.nextInt();
scanner.close();

// 边读内容边写到临时文件,如果行号是要删除的就不写
File file = new File("d:\\1.txt");
File temp = new File("d:\\temp.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(temp)));
String str;
int rowIndex = 0;
while (null != (str = reader.readLine())) {
if (rowIndex != rowToDel) {
writer.write(str + "\r\n");
}
rowIndex++;
}
reader.close();
writer.close();
file.delete();// 删除原文件
temp.renameTo(file);// 临时文件改名成原文件名称
}
}
黑衣要饭的
2011-11-03 · TA获得超过341个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:200万
展开全部
readLine方法可以蛮足你的要求。。
1.每行先读进来...
2.目标行号读了不保存
2.写出文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式