通過 Windows 命令提示符(cmd)在桌面新建文件夾,并在該文件夾中編譯、運行一段 Java 程序段
927
2025-03-31
分布式文件服務能夠為用戶設備中的應用程序提供多設備之間的文件共享能力,支持相同帳號下同一應用文件的跨設備訪問,應用程序可以不感知文件所在的存儲設備,能夠在多個設備之間無縫獲取文件。
分布式文件是指依賴于分布式文件系統,分散存儲在多個用戶設備上的文件,應用間的分布式文件目錄互相隔離,不同應用的文件不能互相訪問。
文件元數據是用于描述文件特征的數據,包含文件名,文件大小,創建、訪問、修改時間等信息。
分布式文件服務采用無中心節點的設計,每個設備都存儲一份全量的文件元數據和本設備上產生的分布式文件,元數據在多臺設備間互相同步,當應用需要訪問分布式文件時,分布式文件服務首先查詢本設備上的文件元數據,獲取文件所在的存儲設備,然后對存儲設備上的分布式文件服務發起文件訪問請求,將文件內容讀取到本地。
分布式文件服務運作如下圖所示:
應用程序如需使用分布式文件服務完整功能,需要申請 ohos.permission.DISTRIBUTED_DATASYNC 權限。
多個設備需要登錄相同華為帳號,然后打開多個設備的藍牙,或將多個設備接入同一 WLAN 局域網,才能實現文件的分布式共享。
當多臺設備對同一文件并發寫操作時有數據沖突,后寫會覆蓋先寫,應用需要主動保證時序控制并發流程。
應用訪問分布式文件時,如果文件所在設備離線,文件不能訪問。
網絡情況差時,訪問存儲在遠端的分布式文件時,可能會長時間不返回或返回失敗,應用需要考慮這種場景的處理。
當兩臺設備有同名文件時,同步元數據時會產生沖突,沖突的解決策略:
本地跟遠端沖突 ,遠端文件被重命名,看到的同名文件是本地同名文件,遠端文件被重命名;
遠端多個設備沖突,以接入本設備 ID 為順序,顯示設備 ID 小的同名文件,其他文件被依次重命名;
如果組網場景,目錄樹下已經有遠端文件,創建同名文件,提示文件已存在;
沖突文件顯示 _conflict_dev 后依次加 id;
同名目錄之間僅融合不存在沖突,文件和遠端目錄同名沖突,遠端目錄后綴加 _remote_directory。
應用可以通過分布式文件服務實現多個設備間的文件共享,設備1上的應用 A 創建了分布式文件 a,設備2上的應用 A 能夠通過分布式文件服務讀寫設備1上的文件 a。
分布式文件兼容 POSIX 文件操作接口,應用使用 Context.getDistributedDir() 接口獲取目錄后,可以直接使用 libc 或 JDK 訪問分布式文件。
分布式文件服務 API 接口功能:
應用可以通過 Context.getDistributedDir() 接口獲取屬于自己的分布式目錄,然后通過 libc 或 JDK 接口,在該目錄下創建、刪除、讀寫文件或目錄。
設備1上的應用 A 創建文件 hello.txt,并寫入內容"Hello World"。
Context context; ... // context初始化 File distDir = context.getDistributedDir(); String filePath = distDir + File.separator + "hello.txt"; FileWriter fileWriter = new FileWriter(filePath, true); fileWriter.write("Hello World"); fileWriter.close();
1
2
3
4
5
6
7
設備 2 上的應用 A 通過 Context.getDistributedDir() 接口獲取分布式目錄。
設備 2 上的應用 A 讀取文件 hello.txt。
FileReader fileReader = new FileReader(filePath); char[] buffer = new char[1024]; fileReader.read(buffer); fileReader.close(); System.out.println(buffer);
1
2
3
4
5
分布式 彈性文件服務 數據管理服務 DAS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。