0

Java プログラミングでファイルを削除してから名前を変更する際に助けが必要です。私の問題は、元のファイルを削除できず、2 番目のファイルの名前を変更できないことです。これがスニペットコードです。任意の提案をいただければ幸いです。

import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;




public void deleteLine(String content) {
    try {

        File inFile = new File("football.dat");
        if (!inFile.isFile()) {
            System.out.println("Parameter is not an existing file");
            return;
        }
        File tempFile = new File(inFile.getAbsolutePath() + "2");
        BufferedReader br = new BufferedReader(new FileReader(inFile));
        PrintWriter pw = new PrintWriter(new FileWriter(tempFile), true);

        String linetobeempty = null;
        while ((linetobeempty = br.readLine()) != null) {

            if (!linetobeempty.trim().equals(content)) {
                pw.println(linetobeempty);
                pw.flush(); System.out.println(linetobeempty);
            }
        }

        pw.close();        
        br.close();
       boolean b = inFile.delete();

        if (!b) {
            System.out.println("Could not delete file");
            return;
        }

        //Rename the new file to the filename the original file had.
        if (!tempFile.renameTo(inFile)) {
            System.out.println("Could not rename file");
        }


    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}
4

2 に答える 2

1

このコード スニペットには、ファイルが削除されない直接の原因となるものは何もありません。問題はもっと深いところにあります - アクセス権、他のプロセスによるオープン、通常のもの。そのすべてを確認してください。もちろん、削除に失敗した後に名前の変更が失敗する理由は明らかであるため、現時点でわかっている問題は 1 つだけです。

于 2012-04-14T19:51:32.523 に答える
1

Windows を使用していますか? Windows では、(UNIX とは異なり) ファイルにファイル ハンドルがあるプロセスがあると、リンク解除と名前変更が失敗します。Java でファイル I/O テストを行う場合、ファイルの書き込みと削除の間に OS を一時停止する必要がある場合があることに気付きました。renameTo と deleteに関するドキュメントは、限られた洞察を提供します。

問題を単純化し、より適切にデバッグするには、ファイルに書き込むのではなく、ファイルを作成します -- File.createNewFile() を使用します。

ファイル Java を削除できないと同じ問題が発生している可能性があります。

于 2012-04-14T20:35:06.373 に答える