Почему мой файл не найден при использовании FileReader в java - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь найти файл, который я сохранил в android studio. Я перепробовал все: поместив полный каталог, поместив файл в новую папку в этом каталоге, используя file.getAbsolutePath(), предварительно объявив файл или поместив файл прямо в считыватель (BufferedReader r = new BufferedReader(new FileReader("history.txt")); Вот код:

        File file = new File("Extra Files/history.txt");
        BufferedReader r = new BufferedReader(new FileReader(file.getAbsolutePath()));
        String scores = r.readLine();
        r.close();

Неважно, что я пытаюсь, похоже, не работает ни одна другая идея, вы не можете использовать текстовые файлы, подобные этому, в android studio или ???

    public void write_score(int ns) throws IOException {
        File file = new File(context.getFilesDir(), "history.txt");
        BufferedWriter w = new BufferedWriter(new FileWriter(file));
        w.append(String.valueOf(ns)).append(",");
        w.close();
    }

Ответы [ 2 ]

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

Поместите файл в папку вашего проекта и используйте следующее утверждение:

BufferedReader br = new BufferedReader(new FileReader("history.txt"));

Я уже проверил его до публикации своего ответа. Если это не работает, опубликуйте снимок экрана со структурой папки вашего проекта, показывая файл history.txt.

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

Если вам просто нужно прочитать файл, вы можете поместить его в папку assets или res / raw и прочитать из них, используя context.getAssets().open("filename") or context.getResources().openRawResource(R.raw.resourceName), чтобы получить входные потоки, а затем, используя BufferedReader(new InputStreamReader(fileStream)), получить читатель. Если нет, этот пост должен иметь ответ, чтобы вы могли читать из другой папки.

Однако, если вы хотите записать в него, одним из способов является использование спецификаций приложения c внутренних файлов , к которым можно получить доступ с помощью

File file = new File(context.getFilesDir(), filename);

Но сначала вам нужно будет создать файл history.txt, используя file.createNewFile(), и заполнить его всем, что вы хотели, потому что он не будет существовать при первом обращении к нему. После этого все должно быть хорошо, хотя. Надеюсь, это поможет.

Редактировать:

Вот пример кода для чтения / записи во внутренний файл

try (BufferedReader br = new BufferedReader(new FileReader(file))) {
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);//Or use Log.d(line);
        }
} catch (IOException e) {
    e.printStackTrace();
}

и

 public void write_score(int ns) throws IOException {
    File file = new File(context.getFilesDir(), "history.txt");
    BufferedWriter w = new BufferedWriter(new FileWriter(file, true));//true makes it append
    w.write(String.valueOf(ns) + ",");
    w.close();
}
...