我寫了一個Android應用程序(其中包括)將文件寫入磁盤。現在我想知道當文件系統在存儲空間之外運行時會發生什麼。我想,例如java.io.FileOutputStream.write()
將拋出一個IOException
,我將不得不趕上。Android測試存儲空間
事情是,我不想依賴我的超級忍者的力量 - 我可能忘記了在某處放置試管或者沒有正確處理它。因此我想測試這個場景。
很遺憾,我找不到任何關於這樣做的良好做法 - 甚至不在SO上。
我當然冷手動像這樣的東西的文件系統,我想:
size = N
dir = /some/path
data = generateDataForSize(size)
while(write(data, dir));
while(round(size/=2) > 1)
write(generateDataForSize(size), dir)
凡write()
要麼產生不同的文件或追加到一個單一的一個。 generateDataForSize()
和大尺寸可能存在一些問題,但現在我們暫且擱置。
什麼癢我是,我將不得不把這個地方放到我的應用程序,再加上我將不得不清理$%#!手動。好的,如果我把它放在自己的目錄中,我可以在adb shell中用一行代碼來丟棄整個東西。
無論如何,有沒有更簡單的方法去爲我失蹤? Android是否爲此提供了任何機制,例如暫時限制每個應用的可用存儲空間?任何集成單元測試soldes或android sdk工具?其他人(你)如何做到這一點?
TL; DR:如何有效的工具和書寫到fs時,它的充分的測試情況下,FS。
編輯:我測試未紮根在真實設備上。即使HAXM啓動並運行,模擬器也非常慢。可悲的是,使用模擬器不是一種選擇。儘管如此,Tasos Moustakas暗示限制了AVD的可用空間,但這一點很不錯。我想如果你避免android:installLocation="preferExternal"
的問題,並將你的應用程序移動到SD /寫入文件到有限的SD,這是一個可接受的解決方案。
接受的答案几乎是我最終做的。但是,這仍然需要一些手動工作,所以隨時發佈更多的答案。
首先,你在哪裏測試你的應用程序? AVD仿真器還是物理設備? –