浏览代码

Fixed rename of files when folder for local files is not already created

David A. Velasco 12 年之前
父节点
当前提交
6ef46f264e
共有 1 个文件被更改,包括 11 次插入5 次删除
  1. 11 5
      src/com/owncloud/android/operations/RenameFileOperation.java

+ 11 - 5
src/com/owncloud/android/operations/RenameFileOperation.java

@@ -192,17 +192,23 @@ public class RenameFileOperation extends RemoteOperation {
      * 
      * 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) {