2011-10-16 41 views
2

所以我做這個android應用程序,需要從用戶提供的CSV文件讀取數據。Android文件存儲選項/約定

CSV文件在桌面計算機上更易於編輯,所以我在應用程序中沒有編輯器,它是「只讀」的。我假設手機的SD卡上有一個文件。

Data Storage documentation之後,我設法編寫了一個啞文件,從外部存儲讀取文件,相對於getExternalStorageDirectory返回的文件夾位置進行硬編碼。所以目前我有:

private static final String CSV_FILE = "/Android/foo/bar.csv" 
... 
File f = new File(Environment.getExternalStorageDirectory(), CSV_FILE); 

然後我將我的手機連接到PC,請在「/ Android」的文件夾中的「富」文件夾(存在我的手機上),複製「吧。 csv「文件,一切都很好。

現在顯然,如果我想分發應用程序,這是不可接受的。所以,我有幾個問題:

  • 自然的解決方案是softcode文件的位置,並在其他任何系統中我將依靠內置的「文件管理器」或什麼的,讓用戶瀏覽正確的文件。 令人驚訝的是我找不到這樣的控件,而且好像有很多第三方文件瀏覽器應用程序。這是否意味着要求用戶選擇手機上的文件不是「習慣」?我應該寫我自己的'文件瀏覽器'嗎?

  • 是否有關於如何命名我的「foo」目錄的約定?我見過創建dir的應用程序,它的名字看起來像一個java包,我是否用內部存儲器誤認它?

  • 還有一個getExternalStoragePublicDirectory方法,它採用了「目錄式」的常數。在我的情況,它將使‘意義上的’假設該文件是在DIRECTORY_DOWNLOADS?(或DIRECTORY_DOWNLOADS的一些子文件夾?)

  • 我應該操心拉姆達用戶將如何把一個文件在手機上?要我堵在我的電腦上的電話很簡單,但真正輕鬆地在所有機器人?

很抱歉,如果所有的這聽起來微不足道,只是想在做一些愚蠢的事情之前清除我的想法

謝謝。

回答

1

這是否意味着要求用戶選擇手機上的文件不是「習慣」?

正確。像iOS一樣,Android儘可能地避開「文件」。

我應該自己寫'文件瀏覽器'嗎?

當然,還有大量的第三方應用程序進行文件瀏覽,其中有一些支持ACTION_PICK或類似的操作(例如,OI文件管理器)。如果沒有人爲此寫入可重用組件,我會感到驚訝。

是否有關於如何命名我的「foo」目錄的約定?我見過創建dir的應用程序,它的名字看起來像一個java包,我是否用內部存儲器誤認它?

不,您可能看到了getExternalFilesDir()的結果。如果您只支持API等級8或更高版本,我只會使用它。如果您支持早期版本的Android,則可以考慮通過getExternalFilesDir()找到適用於您的應用的目錄,併爲較舊的Android版本「手動」使用該目錄。

還有一個getExternalStoragePublicDirectory方法,它採用了「目錄式」的常數。在我的情況,它將使‘意義上的’假設該文件是在DIRECTORY_DOWNLOADS?(或DIRECTORY_DOWNLOADS的一些子文件夾?)

這對於下載 - 更準確地說,是事物的用戶下載他們想要掛到任何安裝的應用程序的獨立這聽起來並不像這種適合您的方案

我應該操心如何。一個lambda用戶會放他們手機上的文件?

什麼是「lambda用戶」?引述吟遊詩人「但是,對於我自己的一部分,這是希臘對我」 :-)

對我堵在手機我的電腦上是很簡單的,但是,在所有機器人真的很容易?

這是有點在Android 3.X更痛苦和較高的,由於Android的USB大容量存儲模式(認爲USB拇指驅動器)移開和MTP(認爲MP3播放器)爲它的USB文件傳輸協議。雖然這有利於整體,但OS X和Linux用戶很煩人,因爲它們都沒有內置的MTP支持。此外,它假定用戶有一個USB電纜方便。您的整體設置還假定用戶擁有便捷的桌面操作系統。

現在,更多的開發人員可能會走上創建Web應用程序而不是桌面應用程序的路線,並通過Internet將數據同步到設備。這消除了使用電纜煩惱的需要,並且不會將用戶綁定到一臺特定的「臺式」機器上進行數據輸入。但是,它確實需要訪問互聯網,這可能會或可能不適合您的情況。

+0

謝謝!對於「希臘語」來說,「lambda用戶」可能是法語表達的可怕翻譯(我們稱「un utilisateur lambda」爲「您的普通用戶」。現在「您的普通用戶」並不代表什麼,因爲沒有人「平均水平」,但我想到的是具有電話,個人電腦和電纜的普通用戶,但並不一定是將所有這些電腦連接起來的技術。 – phtrivier

+0

儘管如此,我仍然沒有找到「好」的解決方案。 ,因爲設置一個webapp真的看起來像一個矯枉過正的出於好奇,將嵌入一個編輯器在我的add,並存儲在sqli db的一切更有意義? – phtrivier

+0

@phtrivier:「將嵌入編輯器在我的添加,並存儲在sqli數據庫的一切更有意義?「 - 除非數據幾乎不可能進入設備,我至少有一個應用程序內編輯器作爲一個選項。畢竟,有些人有平板電腦或帶有物理鍵盤或其他物品的設備,這些設備使數據輸入變得更容易。「爲t設置webapp帽子真的看起來像一個矯枉過正「 - 並創建一個桌面應用程序不是?如果您計劃通過電子表格輸入CSV,請考慮Google文檔集成或與Web等效的內容。 – CommonsWare