簡體   English   中英

Android:無法使用FileInputStream從文件讀取

[英]Android: Can't Read From File using FileInputStream

我正在嘗試從res / raw文件夾中的一個名為“quiz_questions.txt”的文件中讀取。 我編譯的代碼,但看起來它在到達FileInputStream之前就停止了。 也許是打開它,但不是讀它。 我不確定。

import java.io.*;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;

public class Questions extends Activity {

public String[][] questions = new String[10][5];

public void fillArray() {
    {
        Context con = null;
        try {
            //fis = new BufferedInputStream(new FileInputStream("res/raw/quiz_questions.txt"));
            FileInputStream fis = (FileInputStream) con.getResources().openRawResource(R.raw.quiz_questions);
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            String nextLine;
            int i = 0, j = 0;
            while ((nextLine = br.readLine()) != null) {
                if (j == 5) {
                    j = 0;
                    i++;
                }
                questions[i][j] = nextLine;
            }
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
}

你不發布它,但我想你得到一個NullPointerException。 這是因為當您嘗試創建FileInputStreamconnull

由於Activity已經是Context ,因此您可以從語句中刪除con (您還應該使用InputStream接口而不是FileInputStream 。)

InputStream is = getResources().openRawResource(R.raw.quiz_questions);

最后,你應該重新組織你的代碼,這樣is閉合異常是否被拋出:

public void fillArray() {
    try (InputStream is = getResources().openRawResource(R.raw.quiz_questions)) {
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String nextLine;
        int i = 0, j = 0;
        while ((nextLine = br.readLine()) != null) {
            if (j == 5) {
                j = 0;
                i++;
            }
            questions[i][j] = nextLine;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM