JAVA如何删除文本文档里的某一行

public static void del() {// 删除内容
System.out.println("请输入文本文档地址:(盘符:\\文件名.txt)");
found=input.next();
System.out.println("请输入内容:");
String nei=input.next();

}
这是我方法里的代码,求大神

你可以用StreamReader一行一行地读,直到读完,你把读到的每一行加到ArrayList对象中存放,然后遍历这个ArrayList对象,对每一行进行判断处理,不要的直接删除,然后再用StreamWriter把ArrayList对象中的数据重写到文件中,原来的文件覆盖掉。追问

求代码,新人,不太懂

追答

求采纳。。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-04-09

你可以先定义一个InputStreamReader读取文本文件内容,然后再用一个LineNumberReader获取刚才InputStreamReader的对象,LineNumberReader里有个方法readLine()是用来一行一行的顺序读取字符,然后用一个判断语句来判断你想修改的行,最后删除或修改就可以了 。

.txt"),"GBK"));String c;while ((c=input.readLine())!=null) {ll.add(c);System.out.println(c);}input.close();

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();}

本回答被网友采纳
第2个回答  2014-06-24
import java.io.*;

public class Test {

public static void delete(String file, String text) {
delete(new File(file), text);
}

public static void delete(File file, String text) {
File temp = null;
BufferedReader br = null;
PrintWriter pw = null;
try {
temp = File.createTempFile("temp", "temp");
pw = new PrintWriter(temp);
br = new BufferedReader(new FileReader(file));
while (br.ready()) {
String line = br.readLine();
System.out.println(line);
if (line.equals(text)) {
continue;
}
pw.println(line);
}
pw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
safeClose(br);
safeClose(pw);
if (temp != null) {
file.delete();
temp.renameTo(file);
}
}
}

private static void safeClose(Closeable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}

追问

着实看不懂,
public static void del() {// 删除内容
System.out.println("请输入文本文档地址:(盘符:\\文件名.txt)");
found = input.next();
System.out.println("请输入内容:");
String nei = input.next();
}
这是我的代码,能告我肿么写么

追答public static void del() {// 删除内容
    System.out.println("请输入文本文档地址:(盘符:\\文件名.txt)");
    found = input.next();
    System.out.println("请输入内容:");
    String nei = input.next();  
    delete(found, nei);
}

public static void delete(String file, String text) {
        delete(new File(file), text);
}

//这里把上面的三个方法复制下来,如果这都不会,那么你需要的是学习基础知识。

追问

这个……是两个方法吧……,下面那个方法里写上delete以后还提示让创建方法

追答

能看懂就好

本回答被网友采纳
第3个回答  2014-06-24
content.replace("...","");
把那一行替换为“”不就可以了?追问

found.replace("nei","");//FOUND是我的地址,nei是我的内容,这样对吗?

追答

是的。不过在替换完成后要把数据写回到文件里 ,这样才算是修改了。

追问

不能用啊,还是原来的

追答

found = found.replace("nei","");

追问

没有删除掉啊

追答

……………
我给你个例子,你自己对照着改一下:
String abc="abc";
abc = abc.replace("b","");
Syetem.out.println(abc);

结果是ac。

追问

大神,实在不好意思啊,例子可以,可是我单独用Main方法的代码,打开以后删除就删不了,麻烦大神给看一下

追答

你是说,在replace之后文件里的内容没有变化吗?

追问

是的,文件里得内容还在,大神能留个企鹅吗

追答

不用QQ了。你把修改后的内容用Stream写回到文件里就对了。只在内存中修改,而不写回文件,这样的话你只把工作作了一半,File的内容当然不会改变了。

追问

怎么去保存啊,求赐教……

追答

http://www.cnblogs.com/chen111/archive/2012/06/16/2551997.html

本回答被提问者采纳
第4个回答  2014-06-24
你可以先定义一个InputStreamReader读取文本文件内容,然后再用一个LineNumberReader获取刚才InputStreamReader的对象,LineNumberReader里有个方法readLine()是用来一行一行的顺序读取字符,然后用一个判断语句来判断你想修改的行,最后删除或修改就可以了如果还不明白,你可以把详细程序的.java文件发给我,说明你程序的功能,我帮你看看,我的邮箱zzpgreat@163.com
相似回答