1

テキスト ファイル内の行の行を削除するのに苦労しています。このコードを使用しましたが、代わりにすべての行を削除してしまうので、助けが必要です。

    try //vacation leave/
{
    File inputFile = new File("Adlawan" + code1);
    File tempFile = new File("AdalwanTempFile");

    BufferedReader reader = new BufferedReader(new FileReader(inputFile));
    BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

    String lineToRemove = "AdlawanJan2012";
    String currentLine;

    while((currentLine = reader.readLine()) != null)
    {
        //trim newline when comparing with lineToRemove
        String trimmedLine = currentLine.trim();
        if(trimmedLine.equals(lineToRemove)) 
        {
         writer.write(currentLine); 
        }
    }   
    writer.close();
    reader.close();

    if(!inputFile.delete())
    {
        JOptionPane.showMessageDialog(null, "Could not rename file");
        return;
    }
    if(!tempFile.renameTo(inputFile))
        JOptionPane.showMessageDialog(null, "Could not rename file");


}
catch(Exception e)
{
    JOptionPane.showMessageDialog(null, " ");
}

ファイル上のデータは次のようになります。

AdlawanJan2012 Vacation-Leave-Credits -0.6875
AdlawanFeb2012 Vacation-Leave-Credits -0.6875
AdlawanMar2012 Vacation-Leave-Credits -0.6875

行をトリミングした後の望ましい結果:

AdlawanFeb2012 Vacation-Leave-Credits -0.6875
AdlawanMar2012 Vacation-Leave-Credits -0.6875

ありがとうございました...

4

3 に答える 3

3

行が「lineToRemove」変数で始まる場合、ファイル内の行を削除しようとしていると思います。その場合、「 equal 」メソッドの代わりに「startsWith」メソッドを使用することをお勧めします。

while((currentLine = reader.readLine()) != null)
{
    //trim newline when comparing with lineToRemove
    String trimmedLine = currentLine.trim();
    if(!trimmedLine.startsWith(lineToRemove)) 
    {
        // if current line not start with lineToRemove then write to file
        writer.write(currentLine); 
    }
}
于 2012-07-25T09:04:43.717 に答える
1

trim()メソッドは先頭と末尾の空白のみを削除し、空白の後の文字は削除しません。

String lineToRemove = "AdlawanJan2012";


....

String trimmedLine = currentLine.trim();
if(trimmedLine.substring(0, 14).equals(lineToRemove)) {
    //Your deletion logic
}
于 2012-07-25T09:09:14.820 に答える
0

ファイルの内容を 1 行ずつ読み取り、それらを別のファイル (一時ファイル) できればランダム アクセス ファイルにコピーし、削除する行を省略することをお勧めします。残りをテンポラル ファイルにコピーし、削除する行を省略します。次に、ファイルの名前を元の名前に変更します。サンプルはありません。私はあなたが自分ですべてを学ぶように、これを自分で行う必要があります. 幸運を

于 2013-05-18T05:52:57.193 に答える