java - मरम - मेमोरी कार्ड फॉर्मेट




एंड्रॉइड एसडी कार्ड फ़ोल्डर को लिखें (3)

मैं अपने सर्वर से फ़ाइल डाउनलोड करने के लिए निम्न कोड का उपयोग कर रहा हूं, फिर इसे एसडी कार्ड की मूल निर्देशिका में लिखें, यह सब ठीक काम करता है:

package com.downloader;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.os.Environment;
import android.util.Log;

public class Downloader {

    public void DownloadFile(String fileURL, String fileName) {
        try {
            File root = Environment.getExternalStorageDirectory();
            URL u = new URL(fileURL);
            HttpURLConnection c = (HttpURLConnection) u.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();
            FileOutputStream f = new FileOutputStream(new File(root, fileName));

            InputStream in = c.getInputStream();

            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = in.read(buffer)) > 0) {
                f.write(buffer, 0, len1);
            }
            f.close();
        } catch (Exception e) {
            Log.d("Downloader", e.getMessage());
        }

    }
}

हालांकि, Environment.getExternalStorageDirectory(); का उपयोग कर Environment.getExternalStorageDirectory(); इसका मतलब है कि फ़ाइल हमेशा रूट /mnt/sdcard लिख जाएगी। फ़ाइल को लिखने के लिए एक निश्चित फ़ोल्डर निर्दिष्ट करना संभव है?

उदाहरण के लिए: /mnt/sdcard/myapp/downloads

चियर्स

EEF


एंड्रॉइड मैनिफेस्ट में अनुमति जोड़ें

अपने अनुप्रयोगों को प्रकट करने के लिए यह WRITE_EXTERNAL_STORAGE अनुमति जोड़ें।

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.company.package"
    android:versionCode="1"
    android:versionName="0.1">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <!-- ... -->
    </application>
    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest> 

बाहरी भंडारण की उपलब्धता की जांच करें

आपको हमेशा उपलब्धता की जांच करनी चाहिए। बाहरी भंडारण पर आधिकारिक एंड्रॉइड दस्तावेज से एक स्निपेट।

boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)) {
    // We can read and write the media
    mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    // We can only read the media
    mExternalStorageAvailable = true;
    mExternalStorageWriteable = false;
} else {
    // Something else is wrong. It may be one of many other states, but all we need
    //  to know is we can neither read nor write
    mExternalStorageAvailable = mExternalStorageWriteable = false;
}

एक फाइलराइटर का प्रयोग करें

अंत में, लेकिन FileOutputStream बारे में कम से कम न भूलें और इसके बजाए FileOutputStream का उपयोग करें। उस वर्ग के बारे में अधिक जानकारी FileWriter javadoc बनाती है । आप उपयोगकर्ता को सूचित करने के लिए यहां कुछ और त्रुटि प्रबंधन जोड़ना चाहेंगे।

// get external storage file reference
FileWriter writer = new FileWriter(getExternalStorageDirectory()); 
// Writes the content to the file
writer.write("This\n is\n an\n example\n"); 
writer.flush();
writer.close();

यहां जवाब मिला - http://mytechead.wordpress.com/2014/01/30/android-create-a-file-and-write-to-external-storage/

इसे कहते हैं,

/**

* Method to check if user has permissions to write on external storage or not

*/

public static boolean canWriteOnExternalStorage() {
   // get the state of your external storage
   String state = Environment.getExternalStorageState();
   if (Environment.MEDIA_MOUNTED.equals(state)) {
    // if storage is mounted return true
      Log.v("sTag", "Yes, can write to external storage.");
      return true;
   }
   return false;
}

और फिर इस कोड का उपयोग वास्तव में बाहरी संग्रहण को लिखने के लिए करें:

// get the path to sdcard
File sdcard = Environment.getExternalStorageDirectory();
// to this path add a new directory path
File dir = new File(sdcard.getAbsolutePath() + "/your-dir-name/");
// create this directory if not already created
dir.mkdir();
// create the file in which we will write the contents
File file = new File(dir, "My-File-Name.txt");
FileOutputStream os = outStream = new FileOutputStream(file);
String data = "This is the content of my file";
os.write(data.getBytes());
os.close();

और यह यह है। यदि अब आप अपने / sdcard / your-dir-name / फ़ोल्डर पर जाते हैं तो आपको कोड में निर्दिष्ट सामग्री के साथ - My-File-Name.txt नाम की एक फ़ाइल दिखाई देगी।

पीएस: - आपको निम्नलिखित अनुमति की आवश्यकता है -

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

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/dir1/dir2");
dir.mkdirs();
File file = new File(dir, "filename");

FileOutputStream f = new FileOutputStream(file);
...




android-sdcard