Попытка прочитать файл на SD-карте в переменную

У меня есть эта функция, и когда я ее вызываю, она ничего не возвращает.

public String getfileFromSDCard(String filename){//get the file
    String text;
    text = "";

    File root = new File(Environment.getExternalStorageDirectory(), "Notes");
    if (!root.exists()) {
        root.mkdirs();
    }
    File file = new File(root,"file.txt");
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String str;

        while ((str = br.readLine()) != null) {
            text = text + str;
        }
        br.close();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
    return text;
}

Нужно ли мне добавлять какие-либо разрешения в мой манифест Android, кроме

...uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ... (эту строку я написал прямо в коде)

Я уже добавил этот файл и он работает, потому что я могу легко записать файл, но потом не могу его прочитать.

Вот как я вызываю функцию из onCreate

    TextView countDisplay = new TextView(this);
    CreatefiletoSDCard("testnumberone.txt","22222fkdf sdjf hjsdf sdj fsdf ");
    countDisplay.setText(getfileFromSDCard("testnumberone.txt"));

    this.setContentView(countDisplay);

PS: CreatefiletoSDCard() работает.


person user1342645    schedule 23.04.2012    source источник


Ответы (1)


Хотя вы передаете параметр filename в свой метод getfileFromSDCard(), похоже, вы жестко закодировали фактический файл (имя), из которого вы читаете, в file.txt. Судя по именам файлов, которые вы используете для создания своих тестовых файлов, ошибка, вероятно, заключается в том, что вы пытаетесь прочитать из несуществующего файла, независимо от того, какое имя вы на самом деле передаете в метод.

Другими словами, вы, вероятно, захотите изменить следующую строку:

File file = new File(root,"file.txt");

to:

File file = new File(root,filename);
person MH.    schedule 23.04.2012