Как удалить строку из файла, зная ее положение? - PullRequest
0 голосов
/ 13 июля 2011

Я хочу удалить строку из моего файла (в частности, вторую строку) поэтому я использовал другой файл для копирования в него, но используя следующий код, второй файл содержит точно такой же текст. (Мой оригинальный файл .txt и мой окончательный файл .xml)

public static File fileparse() throws SQLException, FileNotFoundException, IOException {  
    File f=fillfile();//my original file
    dostemp = new DataOutputStream(new FileOutputStream(filetemp));
    int lineremove=1;
    while (f.length()!=0) {
        if (lineremove<2) {
            read = in.readLine();
            dostemp.writeBytes(read);     
            lineremove++;
        }

        if (lineremove==2) {
            lineremove++;
        }

        if (lineremove>2) {
            read = in.readLine();
            dostemp.writeBytes(read); 
        }
    }

    return filetemp;
}

Ответы [ 2 ]

5 голосов
/ 13 июля 2011

Вы не читаете строку, если lineremove равно 2, а также проверяете, больше ли оно, чем 2, после увеличения его, когда оно было 2. Сделайте это так:

int line = 1;
String read = null;
while((read = in.readLine()) != null){
   if(line!=2)
   {
     dostemp.writeBytes(read);     
   } 
   line++;
}
2 голосов
/ 13 июля 2011

вы можете использовать BufferedReader с методом readLine(), чтобы читать строку за строкой, проверять, является ли это строкой, которую вы хотите, и пропускать строки, которые вам не нужны.

проверьте документы по адресу: BufferedReader

вот рабочий пример (не самый красивый или чистый :)):

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    BufferedReader in = null;
    try {
        in = new BufferedReader(new FileReader("d:\\test.txt"));
    } catch (FileNotFoundException e3) {
        // TODO Auto-generated catch block
        e3.printStackTrace();
    }
    PrintWriter out = null ;
    try {
        out = new PrintWriter (new FileWriter ("d:\\test_out.txt"));
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }

    String line = null;
    int lineNum = 0;
    try {
        while( (line = in.readLine()) != null) {
            lineNum +=1;
            if(lineNum == 2){
                continue;
            }
            out.println(line);
        }
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    out.flush();

    out.close();
    try {
        in.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...