Среда getExternalStorageDirectory не работает - PullRequest
0 голосов
/ 01 января 2019

Я хочу создать папку и текстовый файл в Android Studio, но, к сожалению, ни файлы, ни папки не создаются в эмуляторе.Я использовал два примера кода, но не работал.- нет никаких ошибок в logcat

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

package com.applike.filing;

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        File localFile = new File(Environment.getExternalStorageDirectory(),"note");
        if (!localFile.exists()) {
            localFile.mkdir();
        }
        try{
            File gpxfile = new File(localFile, "text.txt");
            FileWriter writer = new FileWriter(gpxfile,true);
            writer.append("your file text");
            writer.flush();
            writer.close();
            Toast.makeText(this,"File NOT Created",Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

И я также использовал следующие коды и не ответил

try {
    File dir = new File(Environment.getExternalStorageDirectory(), "note2");
    if (!dir.exists()) {
        dir.mkdir();
    }
    File txt = new File(dir, "test.txt");
    FileWriter fw = new FileWriter(txt);
    fw.append("Hello World");
    fw.close();
    Toast.makeText(this,"File Created",Toast.LENGTH_LONG).show();
}catch (IOException e){
    Toast.makeText(this,"File  Created",Toast.LENGTH_LONG).show();
}

введите описание изображения здесь

Logcat

также я использую два разрешения

WRITE_EXTERNAL_STORAGE - READ_EXTERNAL_STORAGE

1 Ответ

0 голосов
/ 02 января 2019
    package com.applike.filetest2;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    EditText et_name, et_content;
    Button b_save;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
        }

        et_name = (EditText)findViewById(R.id.filename);
        et_content = (EditText)findViewById(R.id.content);
        b_save = (Button)findViewById(R.id.benAdd);

        b_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String filename = et_name.getText().toString();
                String content = et_content.getText().toString();

                if(!filename.equals("") && !content.equals("")) {
                    saveTextAsFile(filename, content);
                }
            }
        });


    }
    private void saveTextAsFile(String filename, String content) {


        try{
         FileOutputStream fos = null;

         File dir = new File(Environment.getExternalStorageDirectory(),"folderTest");
         if(! dir.exists()){
             dir.mkdir();
         }
        String filenam = filename + ".txt";

     //    File n = new File(Environment.getExternalStorageDirectory().getAbsolutePath(),filenam);
        File file = new File(dir, filenam);
        fos = new FileOutputStream(file);
        fos.write(content.getBytes());
        fos.close();
        Toast.makeText(this, "Saved!", Toast.LENGTH_SHORT).show();
    } catch (FileNotFoundException e) {
            e.printStackTrace();
            Toast.makeText(this, "file not found!", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(this, "Error Saving!", Toast.LENGTH_SHORT).show();
        }
    }



    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 10000:
                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    Toast.makeText(this, "Premiss granrted", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(this, "Premiss not granrted", Toast.LENGTH_SHORT).show();
                    finish();
                }
        }
    }
}
...