Не удается получить файл для записи на Android с помощью FileWriter - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок и в Java, и в Android Studio, но я недавно учила себя. В настоящее время я пытаюсь понять, как писать и читать простые текстовые документы на устройстве Android.

Я видел несколько разных способов сделать это в Интернете, но почти все они должны делать с написанием и чтением байтов. Я не совсем понимаю все это на данном этапе, и я просто хочу писать / читать текстовые документы. Я мог бы просто скопировать и вставить материал, который я видел в Интернете, и посмотреть, работает ли он, но я бы предпочел иметь хоть какое-то понимание того, что делает код. Я пытался прочитать онлайн-документацию по многим вещам, которые, как я видел, используют другие люди для достижения этой цели, и мне трудно понять.

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

package com.example.test;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Scanner;

public class MainActivity extends AppCompatActivity {
    static File testFile = new File("test_file.txt");
    static TextView textDisplay;

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

        textDisplay = findViewById(R.id.textDisplay);
        saveData();
    }

    public static void saveData() {
        String text = String.format("%s,%s,%s,%s,%s", 7, 3, 4, 9, 2);
        try {
            FileWriter textWriter = new FileWriter(testFile);
            textWriter.write(text);
            textWriter.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void loadData(View view) {
        ArrayList<Integer> intList = new ArrayList<>();
        try {
            Scanner readFile = new Scanner(testFile).useDelimiter(",");
            while (readFile.hasNext()) {
                Integer data = Integer.parseInt(readFile.next());
                intList.add(data);
            }
            readFile.close();
            textDisplay.setText(intList.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Я думаю, что у вас есть обе проблемы:

, чтобы написать и прочитать текстовый файл, вам понадобится что-то похожее, здесь объясняется: как читать и писать

но вы также должны требовать разрешения с кодом, подобным этому, в вашей деятельности:

static void requestPermissoes(Activity act) throws Exception {
        try {
            ActivityCompat.requestPermissions(act,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.CAMERA,
                    }, 0x3);
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
    }

и добавьте строку в манифест с разрешениями:

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

примечание: android имеет другой способ обращения к внешнему хранилищу (он не равен внешнему SD-карте в android, как внешний для файлов вашего приложения, но не в SD Card) попробуйте взглянуть на это описание

0 голосов
/ 03 апреля 2020

Для записи и чтения файла сначала нам нужно разрешение манифеста, и мы должны взять его во время выполнения. После этого нам понадобится путь к файлу, чтобы сохранить файл и прочитать файл. Решив эту проблему, вы обязательно добьетесь успеха.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...