2017-07-30 74 views
0

我似乎無法弄清楚如何通過android應用程序創建目錄/文件到內部存儲器。我有以下代碼:Android應用程序:如何在內部存儲器中創建目錄

public class Environment extends SurfaceView implements SurfaceHolder.Callback { 
    public static String FILE_PATH; 
    //other unimportant variables 

    public Environment(Conext context) { 
     super(context); 
     FILE_PATH = context.getFilesDir() + "/My Dir/"; 
     File customDir = new File(FILE_PATH); 
     if(!customDir.exists()) 
      System.out.println("created my dir: " + customDir.mkdir()); 

     File test = new File(FILE_PATH + "testFile.txt"); 
     try { 
      if(!test.exists()) 
       System.out.println("created test: " + test.createNewFile()); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
     //other unimportant stuff 
    } 
} 

然後我用ES文件瀏覽器,看看它創建的文件,我沒有在任何地方看到的目錄/文件,儘管它打印出「真正」的System.out的。 println()調用。

我在做什麼錯?

+0

檢查:https://stackoverflow.com/a/40925801/6021469 –

回答

1

創建文件的路徑位於應用程序私有位置。通常你不能從外面訪問它。它實際上是在應用數據文件夾中創建的。不過看起來你想寫在外部文件夾中。 要在外部存儲寫,你必須要求WRITE_EXTERNAL_STORAGE許可清單檔案中的:

<manifest ...> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    ... 
</manifest> 

代碼:

String folder_main = "My Dir"; 

    File f = new File(Environment.getExternalStorageDirectory(), folder_main); 
    if (!f.exists()) { 
     f.mkdirs(); 
    } 
    File test = new File(f , "testFile.txt"); 

在這裏你會找到如何將創建在外部存儲文件夾/文件。

Save a File on External Storage

+0

仍找不到目錄,現在它說它無法創建目錄:「創建我的目錄:false」。嘗試創建測試文件時,還會獲得「java.io.IOException:Permission Denied」 – Ryan

+0

請注意此答案的上半部分代碼,其中將權限授予您的應用。 – ashubuntu

+0

@ashubuntu是的,我添加到清單,仍然不工作 – Ryan

0

您可以通過以下嘗試:

ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext()); 
File directory = contextWrapper.getDir(getFilesDir().getName(), Context.MODE_PRIVATE); 
File file = new File(directory,」fileName」); 
String data = 「TEST DATA」; 
FileOutputStream fos = new FileOutputStream(「fileName」, true); // save 
fos.write(data.getBytes()); 
fos.close(); 

這將寫入文件在設備的內部存儲(/data/user/0/com.yourapp/)

希望這有助於!

相關問題