2015-06-26 4 views
3

У меня есть Uri, указывающий на текстовый файл с intent, и я пытаюсь прочитать файл для разбора строки внутри него. Это то, что я пробовал, но с ошибкой FileNotFoundException. Метод toString() появляется потерять /Android Читать текстовый файл из URI

java.io.FileNotFoundException: Содержание: /com.google.android.apps.bigtop/attachments/downloads/528c4088144d1515d933ca406b7bc273/attachments/d_0_0_b562310a_52b6ec1c_c4d5f0d3_73f7489a_711e4cf2/untitled%20text.txt: открытая не удалось: ENOENT (Нет такого файла или каталога)

Uri data = getIntent().getData(); 
String text = data.toString(); 
if(data != null) { 

    try { 
     File f = new File(text); 
     FileInputStream is = new FileInputStream(f); // Fails on this line 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 
     text = new String(buffer); 
     Log.d("attachment: ", text); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

значение данных:

Содержание: //com.google.android.apps.bigtop/attachments/downloads/528c4088144d1515d933ca406b7bc273/attachments/d_0_0_b562310a_52b6ec1c_c4d5f0d3_73f7489a_711e4cf2/untitled%20text.txt

и значение data.getPath() является

/вложения/загрузки/528c4088144d1515d933ca406b7bc273/вложения/d_0_0_b562310a_52b6ec1c_c4d5f0d3_73f7489a_711e4cf2/безымянный text.txt

Я сейчас пытаюсь получить файл непосредственно от Uri, а не пути:

Uri data = getIntent().getData(); 
String text = data.toString(); 
//... 
File f = new File(text); 

Но е, кажется, теряет один из косых черт от содержания: //

е:

содержание: /com.google.android.apps.bigtop/attachments/downloads/ 528c4088144d1515d933ca406b7bc273/вложения/d_0_0_b562310a_52b6ec1c_c4d5f0d3_73f7489a_711e4cf2/безымянный% 20text.txt

+0

ли вы пытаетесь проверить это, я вижу, что у вас есть пробелы в вашем имени файла http://stackoverflow.com/questions/10301674/ копи-файл-в-андроид-с-пространств-в-файл-имя. – aleksamarkoni

+0

@aleksamarkoni Я перекодировал URL-адрес с% 20 вместо «", но все же FileNotFoundException –

+0

Можете ли вы проверить, доступна ли SD-карта в момент попытки. http://developer.android.com/training/basics/data-storage/files.html#WriteExternalStorage – aleksamarkoni

ответ

2

Read Text из Файл:

private String readText() { 
    File f = new File(Your_File_Path); 
    FileInputStream inputStream = null; 
    try { 
     inputStream = new FileInputStream(f); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    int i; 
    try { 
     i = inputStream.read(); 
     while (i != -1) { 
      byteArrayOutputStream.write(i); 
      i = inputStream.read(); 
     } 
      inputStream.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    return byteArrayOutputStream.toString(); 
} 

Эта функция возвратСтрока, использовать его как ваше требование.

Использование ниже:

Log.i("Text from File", readText()); 

Совершено

+1

Это, очевидно, не ответ. Входной поток должен происходить из Uri, а не из File/Path. Особенно с точки зрения акцента на контент Uri не файл Uri от Google. – rommex

Смежные вопросы