Ordner und Dateien erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ordner und Dateien erstellen

    Hi, ich versuche schon seit längerem einfach einen Ordner zu erstellen, in welchem ich eine .txt speichern möchte.
    Leider schaffe ich es nicht den Ordner zu erstellen.

    Java-Quellcode

    1. String file = Environment.getDataDirectory().toString();
    2. File folder = new File(file, "MedienLister");
    3. folder.mkdirs();
    4. System.out.println(folder.exists());
    Das war mein letzter Versuch... und es gab schon viele andere. Leider bekomme ich als output immer false - und den Ordner finde ich auch nirgendwo auf dem Handy.

    Hat jemand einen helfenden Hinweis?

    Lg.
    Greg
  • Hallo
    das sollte Environment.getDataDirectory().getAbsolutePath()

    nicht toString

    mal noch eine Frage auf welchen speicherbereich möschtest du zugreifen?

    das hier ist dein App Speicherbereich auf dem nur die App zugriff hat.

    wenn du Root rechte hast kannst du auch von auserhalb darauf zugreifen.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Ich hätte es gerne so, das wenn ich am Handy den Internen speicher auswähle den Ordner sehe (so wie bei vielen anderen Apps auch).
    @Xeno sei mir nicht böse, aber ich finde der restliche Code hilft nicht das spezielle Problem zu lösen und ist desshalb, von der menge an Code die ich da posten müsste mal abgesehen, unnötig.

    Ich kenne mich mit android nicht so gut aus, grade was den Zugriff auf daten und deren Pfade angeht. Auf dem PC ist das einfacher ._.

    @jogimuc was muss ich denn ändern um mein Ziel-Speicherort zu erreichen?
  • Da würde ich dir den Extrennen Speicher empfehlen.
    Nur brauchst du da auch die Premission und die musst du ab API 23 auch zur Laufzeit vom User anfordern im Manifest reicht das nicht mehr.


    riptutorial.com/de/android/exa…auterung-der-terminologie


    java-forum.org/thema/externen-speicher-beschreiben.154688/


    nur ist den beispielen noch nicht die Premission abfrage dabei.


    developer.android.com/training/permissions/requesting

    PS.
    System.out.println(folder.exists());
    geht in android nicht in java für dektop ja.

    benutze streams.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von jogimuc ()

  • mhh, ganz umsetzten konnte ich es noch nicht...

    habe in der zeit noch andere lösungen gefunden:

    Java-Quellcode

    1. File data = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator);
    2. File file = new File(data, "liste.txt");
    3. try{
    4. BufferedWriter bw = new BufferedWriter(new FileWriter(file));
    5. bw.write("test");
    6. br.close();
    7. } catch (Exception e1) {
    8. System.out.println(e1);
    9. }
    Alles anzeigen
    Das ist die Fehlermeldung:

    I/System.out: java.io.FileNotFoundException: /storage/emulated/0/liste.txt (Permission denied)


    Ich hoffe ich stelle mich nicht als zu dämlich an...
  • ok... dann bin ich derzeit nicht in der lage es richtig zu verstehen. sry ._.

    ich habe in der manifest ansich alle nötigen permissions erteilt

    XML-Quellcode

    1. <uses-permission android:name="android.permission.INTERNET" />
    2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    4. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    5. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    6. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

    und um die abfrage zu übernehmen wie sie dort als beispiel gezeigt wird bin ich wohl auch zu doof... (thisActivity - was muss ich da eintragen?! (so ist es falsch, mit der class ist es falsch, this ist falsch))

    Als permission brauche ich doch aber Write und Read external Storage oder? (wäre schonmal eine sache die ich verstanden hätte :whistling: )

    Schönen abend euch und danke das ihr euch mit so dummen anfängern wie mir rumschlagt :S
  • Hallo Greg

    wie du schon richtig erkannt hast brauchst du die Permission

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

    es reicht aber nicht mehr aus nur diese Permission im manifest zu setzen.


    Du musst die auch in deinen Code abfragen also den User deiner App fragen und er muss zustimmen.


    Dein von dir zuletzt veröffentlichter Code läuft nicht ohne Permission die du vorher dir vom user holen musst.


    Links wie das geht hast du jetzt eigentlich genug. Der offiziellen von Google von mir die zwei von Xcreen und auch noch zwei Videos . somit sollte es dir eigentlich möglichseindas Problem zu lösen.


    So nun noch ein einfaches Beispiel was die Permissen zur Laufzeit anfordert .

    Die packt man normalerweise am Anfang in die onCrate.

    Java-Quellcode

    1. if (ContextCompat.checkSelfPermission(
    2. this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    3. if (ActivityCompat.shouldShowRequestPermissionRationale(this,
    4. Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
    5. } else {
    6. ActivityCompat.requestPermissions(
    7. this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1234);
    8. }
    9. } else {
    10. dateierstellen();
    11. }
    12. }
    13. @Override
    14. public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    15. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    16. if (requestCode == 1234) {
    17. if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    18. Log.i("resultcode", "dateierstellen " + requestCode);
    19. dateierstellen();
    20. } else {
    21. Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_SHORT).show();
    22. }
    23. }
    24. }
    25. void dateierstellen() {
    26. // hier dein Ccode wenn du die Permissoin hast
    27. }
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P