2013-10-04 1 views
0

Хорошо, я официально разочарован обработкой файлов на Android. Я новичок в этом (всего несколько дней), поэтому я могу просто пропустить что-то очевидное. Я успешно написал короткий файл из нескольких строк с данными CSV в каждой строке. Это не проблема; считывание есть. Я начал с этим (выезд из обработки исключений и анализ для ясности):Различные методы чтения-строки, не срабатывающие на Android

 FileInputStream in = context.openFileInput("foo.txt"); 
     InputStreamReader isr = new InputStreamReader(in); 
     BufferedReader buffreader = new BufferedReader(isr); 
     String inline; 
     while((inline = buffreader.readLine())!=null) 
     { 
      // parse CSV here 
     } 

я получил немедленный нуль при чтении строки. Поэтому я работал над строкой и пытался читать сырые байты, используя различные примеры в SO как шаблон. Я не буду воспроизводить все терпит неудачу, но такие вещи, как это не получилось:

 FileInputStream in = context.openFileInput("foo.txt"); 
     InputStreamReader isr = new InputStreamReader(in); 
     BufferedReader buffreader = new BufferedReader(isr); 
     CharBuffer buff = CharBuffer.allocate(1024); 
     isr.read(buff); 
     String s = buff.toString(); 

Debugging показал, что буфер символов и строка потребляли символы, но они были пусты. Хорошо, я могу по-настоящему пойти в старую школу (я запрограммировал на C до того, как ей было десять лет), если это необходимо. Следующие работали:

 FileInputStream in = context.openFileInput("foo.txt"); 
     InputStreamReader isr = new InputStreamReader(in); 
     int c; 
     String foo = ""; 
     while((c = isr.read())>=0) 
      foo += (char)c; 

«Foo» удалось получить все содержимое, которое я могу расколоть и процесс, но мне не нравится, что это так грубый. Да, это работает, но я хотел бы знать, почему другие этого не сделали. Я старался придерживаться различных примеров в SO, но не имел успеха.

Любые идеи о том, что может быть неправильно с первыми попытками?

+0

Просьба foo.txt файл –

+0

Для меня код вы предоставляете (первый, не смотрел другие из них) является правильным. Возможно, проблема в том, что вы просто не открываете файл? Где находится файл? В папке с активами? – HpTerm

+0

Yeah..openFileInput для внутреннего хранилища (Application package) .so Я уверен, что ваш файл там отсутствует. –

ответ

0
  do { 
       inline=bruffreader.readLine(); 
       if(inline != null) { 
       //parse here 
       } 
      } while (inline != null); 

работал для меня, это не вернулся нулевой