浏览代码

- add write test to natives extraction

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8518 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
nor..67 14 年之前
父节点
当前提交
45af20de0c
共有 1 个文件被更改,包括 18 次插入7 次删除
  1. 18 7
      engine/src/desktop/com/jme3/system/Natives.java

+ 18 - 7
engine/src/desktop/com/jme3/system/Natives.java

@@ -65,19 +65,30 @@ public class Natives {
         if (extractionDir == null) {
             File workingFolder = new File("").getAbsoluteFile();
             if (workingFolder.getUsableSpace() == 0 || !workingFolder.canWrite()) {
-                logger.log(Level.WARNING, "Working directory is not writable. Using home directory instead.");
-                extractionDir = new File(JmeSystem.getStorageFolder(),
-                        "natives_" + Integer.toHexString(computeNativesHash()));
-                if (!extractionDir.exists()) {
-                    extractionDir.mkdir();
-                }
+                setStorageExtractionDir();
             } else {
-                extractionDir = workingFolder;
+                try {
+                    File file = new File(workingFolder.getAbsolutePath() + File.separator + ".jmetestwrite");
+                    file.createNewFile();
+                    file.delete();
+                    extractionDir = workingFolder;
+                } catch (Exception e) {
+                    setStorageExtractionDir();
+                }
             }
         }
         return extractionDir;
     }
 
+    private static void setStorageExtractionDir() {
+        logger.log(Level.WARNING, "Working directory is not writable. Using home directory instead.");
+        extractionDir = new File(JmeSystem.getStorageFolder(),
+                "natives_" + Integer.toHexString(computeNativesHash()));
+        if (!extractionDir.exists()) {
+            extractionDir.mkdir();
+        }
+    }
+
     private static int computeNativesHash() {
         try {
             String classpath = System.getProperty("java.class.path");