Я пытаюсь прочитать простой текстовый файл с SD-карты с помощью Java, и я не могу ее открыть. Я использую Eclipse для мобильных разработчиков на Ubuntu 12.04. Вот код в onCreate()
методе основной деятельности:Чтение с SD-карты
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String status = "Hello, is it me you're looking for?";
String storageState = Environment.getExternalStorageState();
File dir = Environment.getExternalStorageDirectory();
File f = new File(dir, "textTest.txt");
if (f.exists()) {
status = "File is found!";
} else {
status = "File is not found!";
}
this.text1 = (TextView) findViewById(R.id.textView1);
text1.setText(status.subSequence(0, status.length()));
}
Кроме того, вот некоторые из конструкторов я пытался для File f
, ни один из них не работал:
File f = new File(dir, "textTest.txt");
File f = new File("/sdcard/textTest.txt");
File f = new File(dir, "mnt/sdcard/textTest.txt");
Наконец, я проверил внешний состояние хранения с использованием строки storageState
выше, а значение, возвращаемое Environment.getExternalStorageState()
, равно mounted
. Единственное, что у меня есть, это, я думаю, может быть что-то связано с тем, читается ли SD-карта или нет, но это всего лишь предположение. Есть идеи?
Добавлено: В случае, если вы еще не догадались, то TextView
объект читает «Файл не найден!», Когда я запускаю деятельность.
Добавлено 2: Хорошо, я просто попробовал что-то, что сработало. Когда я подключаю телефон через USB, открываются две папки, связанные с телефоном: одна, у которой есть все папки из внутреннего хранилища (данные, DCIM ... и т. Д.) И папка, которая, как я полагаю, подключена к SD-карте, поскольку Я добавил файлы через свой считыватель карт для ноутбуков, а затем ввел его в телефон. Однако, когда я копирую файл testText.txt в первую папку (которая, как я полагаю, связана с внутренней памятью), работает конструктор File f = new File("/sdcard/textTest.txt");
. Как так?
сделать и есть 'write_external_storage' в вашем манифесте? –
Нет, но я все равно не пытаюсь писать в файл. Я пытаюсь читать. И в соответствии с этой ссылкой: http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory%28%29, read_external_storage для будущих выпусков – naxchange
Если вы посмотрите на logcat, возможно, это предупредит вас если вам нужно объявить какие-либо разрешения. –