0

我需要以最简单的方式完成......我在哪里出错了......

到目前为止,这是我的代码...

import java.io.*;
class test
{
public static void main()throws IOException
{
    FileReader f=new FileReader("g.txt");
    BufferedReader in=new BufferedReader(f);
    PrintWriter p=new PrintWriter(new BufferedWriter(new FileWriter("g.txt")));
    String ar[]=new String[5];
    String text;int i=0;
    while((text=in.readLine())!=null)
    {
        ar[i]=text;
        i++;
    }
    i=0;
    for(i=0;i<ar.length;i++)
    {
        if(ar[i].equals("the da vinci code"))
        {
            ar[i]=null;
            break;
        }
    }
    for(int j=0;j<ar.length;j++)
    {
        System.out.println(ar[j]);
        p.println(ar[i]);
    }
    in.close();
    p.close();
}
}
4

2 回答 2

0

仅对该行进行基础引用null不会删除该文件中的该行。

  1. 您需要完整阅读该文件。
  2. 拿起你想要的线条并将它们存储在一个集合中。
  3. 重命名或移动该文件(创建备份以防万一)。
  4. 使用相同的文件名再次写入所有行。
于 2013-09-15T08:48:29.807 回答
0

这是一种更好的方法,但更好的是在您从中读取时写入另一个文件,尝试 -catch 并在 finally 中关闭文件句柄,使用日志记录...

package files;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;//growing array

class ReadFileRemoveLines// class test is a bad name
{
    public static void main(String[]args)throws IOException//need to follow the signature or cant start the program
{
    FileReader f=new FileReader("g.txt");
    BufferedReader in=new BufferedReader(f);

    ArrayList<String> ar = new ArrayList<String>(5);//initial size if you expect so many lines or leave out the 5 ()
    String text;int i=0;
    while((text = in.readLine()) != null)//spaces between symbols help readability
    {
        //why not test test here
        if(!text.equals("the da vinci code")){
            ar.add(text);
        }
        ///i++;
    }
    /*
    i=0;
    for(i=0;i<ar.length;i++)
    {
        if(ar[i].equals("the da vinci code"))
        {
            ar[i]=null;
            break;
        }
    }*/
    in.close();
    PrintWriter p=new PrintWriter(new BufferedWriter(new FileWriter("g.txt")));
    for(int j=0;j<ar.size();j++)
    {
        System.out.println(ar.get(j));

        p.println(ar.get(j));//why are you printint of i loop is j
    }

    p.close();
}
}
于 2013-09-15T09:02:04.867 回答