2016-02-04 56 views
1

我正在嘗試爲需要編寫多個單獨的數據日誌文件的程序使用chrome.apps。然後用戶需要能夠在文件系統中的應用程序之外訪問這些日誌文件以進行後期處理。Chrome應用程序創建並寫入文件

這將需要做很多次,因此最小化到用戶交互將不需要用於文件生成。雖然這在任何本地程序代碼中都很簡單,但我發現這對於Chrome應用程序來說非常困難。 例如我可以使用Chrome應用程序創建「log_file.txt」&「log_file2.txt」而無需用戶交互? 有沒有什麼辦法可以讓用戶只是指定一個目錄然後從我的應用程序,我將能夠在該用戶交互沒有用戶交互的目錄中創建多個文件? 我試過在代碼中這樣做,但我需要chrome.filesystem的「入口」句柄。 「getEntry」方法需要一個「條目」,所以似乎不可能創建新的「條目」,以便我可以寫入新文件。 任何想法,將不勝感激!

+0

歡迎來到Stack Overflow!我看到你編輯你的問題(這很好),只是爲了添加解決方案 - 事實並非如此。堆棧溢出是*問題和答案*的網站。如果您自己的答案基本上來自您接受的答案,您可以隨時將其作爲單獨答案發布。 – usr2564301

回答

3

有什麼辦法可以讓用戶只需指定一個目錄,然後從我的應用程序,我將能夠在該用戶交互沒有用戶交互的目錄中創建多個文件?

是的。您需要爲您有權要求一個目錄,

chrome.fileSystem.chooseEntry({type: "openDirectory"}, /*...*/); 

只要

{"fileSystem": ["write", "retainEntries", "directory"]} 

,你將能夠在該目錄下創建的文件,以及「保留」(保存)的目錄項稍後重新使用而不再詢問用戶。一旦你有一個DirectoryEntry,創建文件應該類似於this

但是至少需要交互(最初詢問文件夾)。

+0

雖然目錄句柄無法創建文件系統對象。要通過chrome api獲取文件系統對象,必須使用chrome.requestFileSystem。這需要一個提供卷ID的選項。我不認爲有從目錄句柄到卷ID的方法。此外,大多數操作系統似乎都不支持getVolumeList。 – NathanZ

+0

'DirectoryEntry'有一個方法'getFile',可以用來創建一個文件。您不需要創建文件系統 - 考慮到這一點,就我鏈接的HTML5Rocks文章而言,您可以直接獲得'fs.root'。 – Xan

+0

嘿Xan,對不起,不小心碰到了輸入鍵太快,請看我編輯的以前的評論。 – NathanZ