Próbuję usunąć plik, po napisaniu czegoś w nim, z FileOutputStream
. Jest to kod używam do pisania:file.delete() zwraca false, mimo że file.exists(), file.canRead(), file.canWrite(), file.canExecute() wszystko zwraca true
private void writeContent(File file, String fileContent) {
FileOutputStream to;
try {
to = new FileOutputStream(file);
to.write(fileContent.getBytes());
to.flush();
to.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Jak widać, ja przepłukać i zamknąć strumienia, ale gdy próbuję usunąć file.delete()
zwraca false.
Sprawdziłem przed usunięciem, aby sprawdzić, czy plik istnieje, i: file.exists()
, file.canRead()
, file.canWrite()
, file.canExecute()
wszystkie zwracają wartość true. Zaraz po wywołaniu tych metod próbuję file.delete()
i zwracam wartość false.
Czy jest coś, co zrobiłem źle?
Zapomniałam wspomnieć, że żaden wyjątek zostanie złapany. –
Czy jesteś pewien, że plik nie jest używany przez inny proces? Zablokowałeś to? Czy działa z funkcją deleteOnExit + exiting? –
Z jakiego systemu operacyjnego korzystasz? Czy możesz ręcznie usunąć plik? Coś może mieć otwarty uchwyt do pliku. – akarnokd