title: Deleting File and Directory in JUnit
body: <p>I'm writing a test for a method that creates a file in a directory. Here's what my JUnit test looks like:</p>
  
  <pre><code>  @Before
    public void setUp(){
        objectUnderTest = new ClassUnderTest();
        //assign another directory path for testing using powermock
        WhiteBox.setInternalState(objectUnderTest, "dirPathField", mockDirPathObject);
  
        nameOfFile = "name.txt";
        textToWrite = "some text";
    }
  
    @Test
    public void shouldCreateAFile(){
  
  
        //create file and write test
        objectUnderTest.createFile(nameOfFile, textToWrite);
        /* this method creates the file in mockPathObject and performs
           FileWriter.write(text);
           FileWriter.close();
        */
  
        File expect = new File(mockPathObject + "\\" + nameOfFile);
        assertTrue(expect.exist());
  
        //assert if text is in the file -&gt; it will not be called if first assert fails
    }
  
    @After
    public void tearDown(){
         File destroyFile = new File(mockPathObject + "\\" + nameOfFile);
         File destroyDir = new File(mockPathObject);
  
         //here's my problem
         destroyFile.delete(); //why is this returning false?
         destroyDir.delete(); //will also return false since file was not deleted above
  
    }
  </code></pre>
  
  <p>I was able to delete the File using deleteOnExit() but I will not be able to delete the directory using delete or deleteOnExit. I will also perform other test for other scenarios in this test script so I don't want to use deleteOnExit.</p>
  
  <p>I don't know why I cannot delete it in JUnit test script while I can delete a file created and modified by FileWriter in runtime when the code is not a JUnit test. I also tried performing an infiniteLoop after the test method and delete the file manually but it tells me that other program is still using the file though I'm able to modify its content.</p>
  
  <p>Hope somebody can suggest a way to delete the files and directories created during the tests. Thanks :D</p>
  
  <p>For more clarity, the method I test looks like this <a href="https://stackoverflow.com/questions/11878716/unit-testing-method-that-invokes-filewriter">Unit testing method that invokes FileWriter</a></p>
  
  <p>Edit:Here is the method to test</p>
  
  <pre><code>    public void createFile(String fileName, String text){
  
             //SOME_PATH is a static string which is a field of the class
             File dir = new File(SOME_PATH); //I modified SOME_PATH using whitebox for testing
  
             if(!dir.exists()){
                  booelan createDir = dir.mkdirs();
                  if(!createDir){
                             sysout("cannot make dir");
                             return;
                  }
             }
  
  
             try{
                   FileWriter fileWrite = new FileWriter(dir.getAbsolutePath() + "/" + fileName, true);
                   fileWrite.write(text);
                   fileWrite.close();
             }
             catch(Exception e){
                   e.printStackTrace();
             }
  
      }
  </code></pre>
  
  <p>I cannot modify this method as other developers created it. I was just instructed to create unit tests for test automation. Thanks.</p>