2012-10-12 47 views
0

我正在使用android-ndk写入文件。因此,使用本地c代码进行文件写入。同时在NDK中写入和读取文件android

它包含一些我正在使用ndk的读数。 点击一个按钮即可开始写入文件。同时我想读取文件的内容并将它们用于显示值的另一个线程中,因为写入操作可能会持续15秒,用户将不得不等待那么多时间才能看到结果,所以我想要显示一个结果一旦我把它放入那个文件中。

是否可行,如果是的话,可以告诉我如何去做?

嗯,我开始用它,右NW其如何我这样做,,

Thread thr1 = new Thread(r1); 
Thread thr2 = new Thread(r2); 
thr1.start(); 
thr2.start(); 



r1 = new Runnable() { 
      public void run() { 
      File sdcard= Environment.getExternalStorageDirectory(); 
      nativeFunction(sdcard +"/readings.txt"); 
      //takingReading=false; 
      readingFile = new File(sdcard +"/readings.txt"); 

      Log.i("length of file", ""+readingFile.length()); 
      } 
     }; 




r2 = new Runnable() { 
      public void run() { 
      try { 

        Thread.sleep(3000); 
        File sdcard= Environment.getExternalStorageDirectory(); 

       readingFile = new File(sdcard +"/readings.txt"); 

       Log.i("length of file", ""+readingFile.length()); 


      } catch (InterruptedException iex) {} 
      } 
     }; 

nativeFunction打开

file= fopen(location,"w+"); 

此功能不断写的东西在文件约2分钟, 但我需要不断得到值输入bye原生函数,所以我开始第二线程,但是当我检查file.length()它总是0.

和wh本机功能写入完成,然后实际文件大小。那么如何解决这个问题呢?

+0

我想知道可行性,无论是否可行,那么只有我想到开始。 –

回答

1

这应该可以使用pthreads。所以你需要产生2个线程,一个做文字,另一个做阅读。如果你是从同一个文件中完成的,你可能会遇到竞争条件,所以要小心。

更多关于pthreads的信息,请点击google。它是Linux世界常用的。

+0

thnks在这方面给予超前,thnks很多 –

+0

欢迎!请回来,让我们知道它是否有效。 –

+0

你可以从Java中产生一个读者线程,并从中调用NDK。它稍微容易一些。 –