2013-07-22 3 views
0

Я использую следующий try/catch, чтобы попытаться разобрать текстовый файл, разделенный на трубы, в массив (каждая строка выглядит так: spanishword | englishword | spanishword.mp3) для приложения для флеш-карт. Довольно просто, но я полный noob. Вот что я собрал вместе, что приводит к FileNotFoundException.FileNotFoundException: ENOENT ... но, но, но у меня есть файл

Файл res/raw/first100mostcommon.txt. Мне нравится решение проблем, и я не очень заинтересован в том, чтобы получить решение, но лучше понять, чем «файл не найден».

Я думаю, что String strFile = "R.raw.first100mostcommon"; - это правильный способ назвать его; это правильно?

try 
{ 
    String strFile = "R.raw.first100mostcommon"; 

    //create BufferedReader to read pipe-separated variable file 

    BufferedReader br = new BufferedReader(new FileReader(strFile)); 
    String strLine = ""; 
    StringTokenizer st = null; 

    int row = 0; 
    int col = 0; 

    //read pipe-separated variable file line by line 

    while((strLine = br.readLine()) != null) 
    { 
     //break pipe-separated variable line using "|" 
     st = new StringTokenizer(strLine, "|"); 

     while(st.hasMoreTokens()) 
     { 
      //store pipe-separated variable values 
      stWords[row][col] = st.nextToken(); 
      col++; 
     } 
     row++;         
     //reset token number 
     col = 0;       
    }  
} 
catch(Exception e) 
{ 
    text.setText("Exception while reading csv file: " + e); 

} 
+0

logcat было бы неплохо ;-) кроме этого, см. Мое решение comingsoon® - изменить: нет решения: см. Http://stackoverflow.com/a/5675934/2188682 –

+1

Вы должны использовать правильный файловый разделитель. например '/' вместо '.' в 'strFile'. В настоящее время компилятор рассматривает это как полное имя файла, а не как 'filepath'. Так что, скорее всего, он смотрит в папку 'root', где этот файл недоступен, вызывая' FileNotFoundException' – Smit

+0

Является ли ваш файл в том же каталоге, что и ваш файл '.class'? –

ответ

4

Файл Рез/сырье/first100mostcommon.txt

Это не файл. Это сырьевой ресурс. Он существует как файл на вашей машине разработки. Он существует в записи в APK (ZIP-архив) на устройстве.

Чтобы получить доступ к сырьевому ресурсу, хранящийся на компьютере разработчика, как res/raw/first100mostcommon.txt, вызовите getResources().openRawResource(R.raw.first100mostcommon) на любом Context, например, ваш Activity. Это вернет InputStream, который вы можете использовать для чтения в содержимом.

+0

Спасибо; Это мне было непонятно. –