it-swarm.com.de

Wie erstelle ich ein Verzeichnis im internen Speicher bei der Installation der Android-Anwendung?

Ich möchte einen einzigen Ordner haben, in dem ich alle Ressourcen ablegen werde, die ich benötigen werde, und ich möchte sie im internen Speicher ablegen. Da ich möchte, dass dieses Verzeichnis nur einmal erstellt wird, habe ich herausgefunden, dass ich es in der Hauptaktivität der Anwendung erstellen sollte:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    File directory = context.getDir("mydir", Context.MODE_PRIVATE);
    Log.d("directory", directory.getAbsolutePath().toString());
} 

Es scheint in Ordnung zu sein, da ich dies im Internet gefunden habe. Ich erhalte jedoch eine Menge Erros, ich kann das Verzeichnis für den Verzeichnispfad aufrufen und die Anwendung startet nicht. Irgendeine Idee warum?

Wenn ich jedes Mal mit internem Speicher arbeite, wenn ich meine Anwendung von Eclipse auf mein Telefon starte, löscht diese dann automatisch die vorherige zusammen mit ihren Ressourcen. Oder muss ich das manuell tun?

11
Andrey

benutze getCacheDir(). Sie gibt den absoluten Pfad zum anwendungsspezifischen Cache-Verzeichnis im Dateisystem zurück. Dann können Sie Ihr Verzeichnis erstellen

File myDir = new File(getCacheDir(), "folder");
myDir.mkdir();
15
Blackbelt

Wenn Sie stattdessen auf der externen SD-Speicherkarte speichern möchten, müssen Sie dies haben

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

In Ihrer AndroidManifest.xml-Datei

Auch dies für die Arbeit mit dem Speicher:

File direct = new File(Environment.getExternalStorageDirectory()+"/folder");

if(!direct.exists()) {
     if(direct.mkdir()); //directory is created;
}
6
Andy Davies

Stellen Sie zunächst sicher, dass Sie die verschiedenen Speicheroptionen kennen und verstehen, die Sie für Ihre Anwendung zur Verfügung haben. Google hat hier einen sehr guten Artikel zum Thema:

http://developer.Android.com/guide/topics/data/data-storage.html

Die Antwort von Andy erwähnt Environment.getExternalStorageDirectory () (API Level 7) für das Schreiben auf eine SD-Karte oder ähnliches. Beachten Sie jedoch, dass an diesem Speicherort geschriebene Dateien nicht gelöscht werden, wenn der Benutzer die App deinstalliert. Die Dokumentation sagt:

"Anwendungen sollten dieses Verzeichnis der obersten Ebene nicht direkt verwenden, um eine Verschmutzung des Root-Namespaces des Benutzers zu vermeiden."

Wenn Sie sich auf API Level 8 und höher konzentrieren, sollten Sie stattdessen Context.getExternalCacheDir () verwenden, da Dateien an diesem Speicherort bei der Deinstallation der App entfernt werden. Wenn Sie wirklich möchten, dass Dateien auch nach einer Deinstallation erhalten bleiben, sollten Sie Context.getExternalFilesDir () verwenden. Außerdem gibt es getCacheDir () und getFilesDir () für die Arbeit mit Dateien im internen Speicher.

Wie in den Kommentaren zu Ihrer Frage erwähnt, sollten Sie die Fehler hier wirklich posten, damit wir Ihnen helfen können.

PS: Ich bin neu in der Beantwortung von Fragen zu SO, daher habe ich nicht genug Repräsentanten, um Links zu allen in meiner Antwort genannten Funktionen zu posten, und ich scheine keine vorherigen Posts kommentieren zu können.

5
britzl
<uses-permission Android:name="Android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />

File newfile = new File(Environment.getExternalStorageDirectory()+"/specifyfoldername","nestedfoldername");
    direct.mkdir();
// it will create two folder in your internal storage first is specifyfoldername and another one inside the mentioned folder which is nestedfoldername
    }
0
Shashwat Gupta

Ich denke, die Antwort von Blackbelt ist gut, aber ich wollte sie nicht im internen Cache speichern (sie wird gelöscht und oft so geschrieben, dass ich die Spezifikationen habe, die ich versucht habe).

String path = "";


Und dann

if (path.isEmpty()) {
        File file = new File(this.getFilesDir(), "my_dir_identfiying_name/");
        path = file.getAbsolutePath();
        Log.d("PATH", path);
    }
0
sivi

Android Studio Video in einem bestimmten Ordner herunterladen:

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

  String path = Environment.getDataDirectory().getAbsolutePath().toString() + "/storage/emulated/0/appFolder";
  File mFolder = new File(path);
  if (!mFolder.exists()) {
      mFolder.mkdir();
  }
  File Directory = new File("/sdcard/kaizzan/");
  Directory.mkdirs();
0