Android Ресурсы для записи и чтения.Filewrite неправильно закрыт в Activity - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть куча файлов ресурсов, которые я читаю в Android, когда приложение запускается, а затем записывает их в каталог данных. Я закрываю буферизованный ридер в Java, но когда я пытаюсь прочитать файл, который я только что написал в JNI, он говорит, что файл уже открыт. Есть ли дополнительный шаг для освобождения файлового ресурса, который мне не хватает? Мой код ниже: суффикс несколько нестандартный, но запись, кажется, работает нормально. Следующее, что я делаю, это пытаюсь прочитать файл в части программы JNI, но std :: ifstream f (filepath) не открывает файл

std :: ifstream myfilestream (fileName);

if (! (Myfilestream.is_open ())) {

}

public void StoreResourceFilesFiles() throws IOException {      
  String str="";
  StringBuffer buf = new StringBuffer();
  Resources res=this.getResources();

  InputStream is = this.getResources()
                  .openRawResource(R.raw.snlfiles);
  BufferedReader reader = new BufferedReader(
                              new InputStreamReader(is));
  if (is!=null) {
  while ((str = reader.readLine()) != null) {
  buf.append(str + "\n" );
  }
  }
  is.close();
 // Toast.makeText(getBaseContext(), 
//  buf.toString(), Toast.LENGTH_LONG).show();

  BufferedWriter writer = null;
  try
  {
         File f = this.getFilesDir();
         String absPath=f.getAbsolutePath();
         String[] files=f.list();
         int len1 = files.length;


         FileOutputStream fos = openFileOutput("myfile.snl", Context.MODE_PRIVATE);
         fos.write(buf.toString().getBytes());
         fos.close();
         if ( writer != null)
             writer.close( );
         // writer.write( buf.toString());
          File f2 = this.getFilesDir();
          int len2 = f2.list().length;
          files = f2.list();

          Log.i("NDKFooActivity", "length1="+len1 +"length2="+len2);

          for (int i=0; i< files.length; i++){
              Toast.makeText(this, "filesName="+files[i], Toast.LENGTH_SHORT).show();
          }

  }
  catch ( IOException e)
  {
      Log.i("NDKFooActivity", "error is "+e.getMessage());
  }
  finally
  {
          try
          {
                  if ( writer != null)
                          writer.close( );
          }
          catch ( IOException e)
          {
          }
  }
}
...