Reputation: 1106
I have this code
import org.apache.commons.io.FileUtils;
try {
FileUtils.copyURLToFile(new URL(SHA1_LINK), new File("SHA1.txt"));
if(!sameSha1()) {
System.out.println("sha diferentes");
FileUtils.copyURLToFile(new URL(LINK), new File(PROG));
}
} catch (Exception e) {
System.out.println("Internet is off");
}
//delete SHA1 file
Files.deleteIfExists(Paths.get("SHA1.txt"));
and when I execute it it says
java.nio.file.FileSystemException
The process cannot access the file because it is being used by another process (in sun.nio.fs.WindowsException)
In the sameSha1()
I have this:
String sha1Txt = new Scanner(new File("SHA1.txt")).useDelimiter("\\Z").next();
I want to delete the file 'SHA1.txt'. How can I do this?
Upvotes: 7
Views: 30563
Reputation: 982
Try to auto-close file resource when it's used, something like this :
Path tempFilePath = fileUtil.createTempFile( uploadedInputStream, fileDetail.getFileName() );
File tempFile = tempFilePath.toFile();
try (InputStream is = new FileInputStream( tempFile )) {
uploadDocument( fileTypeId, description, is );
} catch (IOException e) {
LOGGER.debug( e );
}
Files.deleteIfExists( tempFilePath );
Upvotes: 0
Reputation: 20015
I guess with sameSha1
you open SHA1.txt
to read it and you forget to close it.
EDIT:
From your comment you contain the following line in sameSha1
:
String sha1Txt = new Scanner(new File("SHA1.txt")).useDelimiter("\\Z").next();
So you create a scanner instance but you don't explicitly close it. You should do something like that:
Scanner s = new Scanner(new File("SHA1.txt"));
try {
String sha1Txt = s.useDelimiter("\\Z").next();
...
return result;
}
finally {
s.close();
}
Or as @HuStmpHrrr suggests in Java 7:
try(Scanner s = new Scanner(new File("SHA1.txt"))) {
String sha1Txt = s.useDelimiter("\\Z").next();
...
return result;
}
Upvotes: 7
Reputation: 1502
If it's being used by another process, I'm guessing some other program has that text file open. Try closing the other program.
Upvotes: 0