FileNotFound (Доступ запрещен) Исключение в java.io

Почему я получаю эту ошибку при запуске этой программы? Это происходит после случайных итераций. Обычно после 8000-й итерации.

public static void main(String[] args)
{
    FileWriter writer = null;
    try
    {
        for(int i = 0; i < 10000; i++)
        {
            File file = new File("C:\\Users\\varun.achar\\Desktop\\TODO.txt");

            if(file.exists())
            {
                System.out.println("File exists");
            }
            writer = new FileWriter(file, true);
            writer.write(i);
            System.out.println(i);
            writer.close();
            if(!file.delete())
            {
                System.out.println("unable to delete");
            }

            //Thread.sleep(10);
            //writer = null;
            //System.gc();
        }
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if(writer != null)
        {
            try
            {
                writer.close();
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}

После возникновения исключения файл отсутствует. Это означает, что он удаляется, но FIleWriter пытается получить блокировку до этого, даже если это не многопоточная программа. Это потому, что Windows не удаляет файл достаточно быстро, и, следовательно, FileWriter не получает блокировку? Если да, то метод file.delete () возвращается до того, как Windows фактически удалит его?

Как мне решить эту проблему, поскольку у меня возникает аналогичная проблема во время нагрузочного тестирования моего приложения.

РЕДАКТИРОВАТЬ 1: Stacktrace:

java.io.FileNotFoundException: C:\Users\varun.achar\Desktop\TODO.txt (Access is denied)     
at java.io.FileOutputStream.openAppend(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:192)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
    at java.io.FileWriter.<init>(FileWriter.java:61)

РЕДАКТИРОВАТЬ 2 : В программу добавлены условия file.exists () и file.delete. и новая трассировка стека:

7452
java.io.FileNotFoundException: C:\Users\varun.achar\Desktop\TODO.txt (Access is denied)
    at java.io.FileOutputStream.openAppend(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:192)
    at java.io.FileWriter.<init>(FileWriter.java:90)
    at com.TestClass.main(TestClass.java:25)

РЕДАКТИРОВАТЬ 3 Дамп потока

TestClass [Java Application]    
    com.TestClass at localhost:57843    
        Thread [main] (Suspended (exception FileNotFoundException)) 
            FileOutputStream.<init>(File, boolean) line: 192    
            FileWriter.<init>(File, boolean) line: 90   
            TestClass.main(String[]) line: 24   
    C:\Users\varun.achar\Documents\Softwares\Java JDK\JDK 6.26\jdk\jre\bin\javaw.exe (09-Nov-2011 11:57:34 PM)  

РЕДАКТИРОВАТЬ 4 : Программа успешно работает на другом компьютере с той же ОС. Теперь, как мне убедиться, что приложение успешно работает на компьютере, на котором оно развернуто?

8
задан Varun Achar 10 November 2011 в 08:10
поделиться