2013-09-15 3 views
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(); 
} 
} 

ответ

0

Вот один из способов, хотя лучше писать в другой файл, как вы читаете из этого, попробовать -catch и закрыть файл обрабатывает в, наконец, использование протоколирования ...

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(); 
} 
} 
+0

это имеет смысл поблагодарить u .. – user2780835

+0

также попробуйте IDE, чтобы отформатировать ваш код и организовать импорт, подумал, что его хорошо компилировать и запускать из командной строки, чтобы понять основы. IDE также расскажет вам полезные вещи, такие как переменные, которые не используются (я оставил неиспользованный) – tgkprog

0

Просто делает основную ссылку этой линии null не удаляет эту строку в этом файле.

  1. Вам необходимо полностью прочитать файл.
  2. Подберите линии, которые вы хотите, и сохраните их в коллекции.
  3. Переименуйте или переместите этот файл (создайте резервную копию на всякий случай).
  4. Напишите все строки с тем же именем файла.
+0

О .... Хорошо спасибо, сделайте изменения .... спасибо большое – user2780835

Смежные вопросы