How to create a file on Android Internal Storage?

后端 未结 5 747
星月不相逢
星月不相逢 2020-11-27 05:14

I want to save a file on internal storage into a specific folder. My code is:

File mediaDir = new File(\"media\");
if (!mediaDir.exists()){
   mediaDir.creat         


        
相关标签:
5条回答
  • 2020-11-27 05:44

    I was getting the same exact error as well. Here is the fix. When you are specifying where to write to, Android will automatically resolve your path into either /data/ or /mnt/sdcard/. Let me explain.

    If you execute the following statement:

    File resolveMe = new File("/data/myPackage/files/media/qmhUZU.jpg");
    resolveMe.createNewFile();
    

    It will resolve the path to the root /data/ somewhere higher up in Android.

    I figured this out, because after I executed the following code, it was placed automatically in the root /mnt/ without me translating anything on my own.

    File resolveMeSDCard = new File("/sdcard/myPackage/files/media/qmhUZU.jpg");
    resolveMeSDCard.createNewFile();
    

    A quick fix would be to change your following code:

    File f = new File(getLocalPath().replace("/data/data/", "/"));
    

    Hope this helps

    0 讨论(0)
  • 2020-11-27 05:49

    Write a file

    When saving a file to internal storage, you can acquire the appropriate directory as a File by calling one of two methods:

    getFilesDir()

          Returns a File representing an internal directory for your app.
    

    getCacheDir()

         Returns a File representing an internal directory for your 
         app's temporary cache files.
         Be sure to delete each file once it is no longer needed and implement a reasonable 
         size limit for the amount of memory you use at any given time, such as 1MB.
    

    Caution: If the system runs low on storage, it may delete your cache files without warning.

    0 讨论(0)
  • 2020-11-27 05:57

    Hi try this it will create directory + file inside it

    File mediaDir = new File("/sdcard/download/media");
    if (!mediaDir.exists()){
        mediaDir.mkdir();
    }
    
    File resolveMeSDCard = new File("/sdcard/download/media/hello_file.txt");
    resolveMeSDCard.createNewFile();
    FileOutputStream fos = new FileOutputStream(resolveMeSDCard);
    fos.write(string.getBytes());
    fos.close();
    
    System.out.println("Your file has been written");  
    
    0 讨论(0)
  • 2020-11-27 06:07

    You should use ContextWrapper like this:

    ContextWrapper cw = new ContextWrapper(context);
    File directory = cw.getDir("media", Context.MODE_PRIVATE);
    

    As always, refer to documentation, ContextWrapper has a lot to offer.

    0 讨论(0)
  • 2020-11-27 06:09

    You should create the media dir appended to what getLocalPath() returns.

    0 讨论(0)
提交回复
热议问题