*
* TODO move this method, and maybe FileDownload.get***Path(), to a class with utilities specific for the interactions with the file system
*
- * @return 'True' if a temporal file named with the name to set could be created in the file system where
- * local files are stored.
+ * @return 'True' if a temporal file named with the name to set could be created in the file system where
+ * local files are stored.
+ * @throws IOException When the temporal folder can not be created.
*/
- private boolean isValidNewName() {
+ private boolean isValidNewName() throws IOException {
// check tricky names
if (mNewName == null || mNewName.length() <= 0 || mNewName.contains(File.separator) || mNewName.contains("%")) {
return false;
}
// create a test file
- String tmpFolder = FileStorageUtils.getTemporalPath("");
- File testFile = new File(tmpFolder + mNewName);
+ String tmpFolderName = FileStorageUtils.getTemporalPath("");
+ File testFile = new File(tmpFolderName + mNewName);
+ File tmpFolder = testFile.getParentFile();
+ tmpFolder.mkdirs();
+ if (!tmpFolder.isDirectory()) {
+ throw new IOException("Unexpected error: temporal directory could not be created");
+ }
try {
testFile.createNewFile(); // return value is ignored; it could be 'false' because the file already existed, that doesn't invalidate the name
} catch (IOException e) {