2016-08-01 25 views
1

我使用internalDataPath看起來是這樣的:的Android NDK internalDataPath - 寫我<strong>NativeActivity的</strong>,當在運行時訪問內提交

"/data/data/app.name/files" 

我再嘗試寫入文件,像這樣:

- fopen("/data/data/app.name/files/test.txt", "wb"); 
- fwrite(buffer, size, count, m_handle); 
- fclose(m_handle); 

在這種情況下,則fopen將會失敗,並不會打開這意味着現實的其他功能則不會調用該文件,我嘗試通過查看文件系統和I nstead,嘗試了以下路徑。

"/Android/data/app.name/files/test.txt" 

這有效,它創建文件並允許其他函數寫入和關閉文件。

我的問題是,怎麼來internalDataPath/數據/代替/安卓/開始?我在設置我的應用程序時是否做錯了什麼?我應該調用不同的功能嗎?

另外值得一提的是,

externalDataPath = "/storage/emulated/0/Android/data/app.name/files" 

這意味着,該設備(不具有外部SD),它指向正確的內部文件路徑。

讓我知道這是否有任何不清楚或您需要更多信息。

感謝

+0

這是什麼設備和版本?我沒有'Android'位置,只有'data'在根目錄,這就是'internalDataPath'返回的內容,所以在類似的例子中'fopen'對我來說工作正常。 –

+0

設備:Nexus 7平板電腦(2012) 版本:Android 5.1.1(LMY47V) 這是我的開發設備,所以它看到了相當數量的閃光燈和根等,所以也許它只是進入了一些破碎的狀態... Android 6上的我的Galaxy S6似乎在「/ storage/emulated/0」路徑中包含「Android」文件夾和「data」文件夾。 – Maddius

+0

我已經使用Android 6.0.1在Nexus 7 2013上進行了測試。我不知道什麼可能導致'internalDataPath'變量指向一個無效的路徑。你是否嘗試過重新設置工廠? –

回答

0

我加的mkdir(),以確保整個internalDataPath樹肯定是創造,它似乎對我的Nexus 7的工作,我可以看到正在使用ES文件瀏覽器創建的文件。

它也適用於我的銀河S6,但是我不能真正看到在ES文件瀏覽器中的文件,但它的作品,因爲該文件被加載,並在下次重新讀,所以我只能假設我不能請參閱該文件,因爲此設備未生根。

值得一提的是,Android的版本之間,internalData路徑已改變的位置,例如:

的Nexus 7(5.1.1): internalDataPath = /data/data/app.name/files

Galaxy S6(6.0.1): internalDataPath = /data/user/0/app.name/files

這些路徑是絕對的,或者至少相對於ES文件資源管理器中最高的可查看根目錄。

不確定這是否會對任何人有所幫助,問題的主要部分可能是我自己對Android文件系統缺乏瞭解,因爲似乎有很多類似結構化的目錄,很容易迷失在錯誤的目錄中。

感謝Patrik和Dave花時間跟我一起看。

+0

很高興這是爲你工作。我仍然很想知道什麼機制通常負責創建這些目錄,因爲這似乎是在我的測試用例的第一次執行時自動發生在4.2.2和6.01上 –

相關問題