【HarmonyOS】【ARKUI】ets怎麼實現文件操作

来源:https://www.cnblogs.com/developer-huawei/archive/2022/03/24/16033683.html
-Advertisement-
Play Games

ets 怎麼實現文件操作? 關於文件操作的我們可以學習HarmonyOS文件管理和Ability上下文 這兩篇文檔,我這邊實現”文件路徑讀取”、“文件寫入”“文件讀取”,“運行效果”四個方面實現,具體操作如下 1. 文件路徑讀取 參考context.getFilesDir來進行獲取文件路徑,代碼如下 ...


ets 怎麼實現文件操作?

關於文件操作的我們可以學習HarmonyOS文件管理Ability上下文 這兩篇文檔,我這邊實現”文件路徑讀取”、“文件寫入”“文件讀取”,“運行效果”四個方面實現,具體操作如下

1. 文件路徑讀取

參考context.getFilesDir來進行獲取文件路徑,代碼如下

image.png

private getCacheDir() {
    var context = ability_featureAbility.getContext();
    context.getFilesDir()
      .then((data) => {
        console.log('File directory obtained. Data:' + data);
        this.path=data;
    }).catch((error) => {
        console.error('Failed to obtain the file directory. Cause: ' + error.message);
    })
}

2. 文件寫入

參考fileio.openSync的api,實現代碼如下

image.png

private writeFiles(){
    let fd = fileio.openSync(this.path+"/111.txt", 0o102, 0o666);
    fileio.write(fd, "你好 2022", function (err, bytesWritten) {
        if (!err) {
            console.log("寫入成功");
        }
    });
}

3. 文件讀取

參考 fileio.read這個api ,代碼如下

image.png

private ReadFile() {
    let Filepath = this.path+"/111.txt";
    let fd = fileio.openSync(Filepath, 0o2);
    let buf = new ArrayBuffer(4096);
    fileio.read(fd, buf, function (err, readOut) {
        if (!err) {
            let  encodedString = String.fromCodePoint.apply(null, new Uint8Array(readOut.buffer));
            let decodedString = decodeURIComponent(escape(encodedString));//沒有這一步中文會亂碼
            console.log("讀取文件內容"+decodedString);
        }
    });
}

4. 運行效果

全部代碼如下

import fileio from '@ohos.fileio';
import ability_featureAbility from '@ohos.ability.featureAbility';
@Entry
@Component
struct NewmyFileTwo {
  @State    path:string="";
  private getCacheDir(){
    var context = ability_featureAbility.getContext();
    context.getFilesDir()
      .then((data) => {
        console.log('File directory obtained. Data:' + data);
        this.path=data;
      }).catch((error) => {
      console.error('Failed to obtain the file directory. Cause: ' + error.message);
    })
  }
 
  private writeFiles(){
    let fd = fileio.openSync(this.path+"/111.txt", 0o102, 0o666);
    fileio.write(fd, "你好 2022", function (err, bytesWritten) {
      if (!err) {
        console.log("寫入成功")
      }
    });
 
  }
  private ReadFile(){
    let Filepath = this.path+"/111.txt";
    let fd = fileio.openSync(Filepath, 0o2);
    let buf = new ArrayBuffer(4096);
    fileio.read(fd, buf, function (err, readOut) {
      if (!err) {
        let  encodedString = String.fromCodePoint.apply(null, new Uint8Array(readOut.buffer));
        let decodedString = decodeURIComponent(escape(encodedString));//沒有這一步中文會亂碼
        console.log("讀取文件內容"+decodedString);
      }
    });
  }
 
 
  private getFilesDirNew(){
    var context = ability_featureAbility.getContext();
    context.getFilesDir()
      .then((data) => {
        console.log('File directory obtained. Data:' + data);
        this.path=data;
      }).catch((error) => {
      console.error('Failed to obtain the file directory. Cause: ' + error.message);
    })
  }
 
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Text('獲取文件目錄')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .onClick(this.getFilesDirNew.bind(this));
 
      Text('寫文件 你好 2022 到文件中')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .backgroundColor(Color.Red)
        .onClick(this.writeFiles.bind(this));
 
      Text('讀文件內容')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .backgroundColor(Color.White)
        .onClick(this.ReadFile.bind(this));
    }
    .width('100%')
    .height('100%')
  }
}

效果圖如下:

image.png


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • .net core IdentityServer4 認證授權 token ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是IAR內部C-SPY調試組件配套巨集文件(.mac)用法。 痞子衡之前寫過一篇 《JLink Script文件基礎及其在IAR下調用方法》,那篇文章介紹了 J-Link 硬體調試器配套的 .JLinkScript 文件功能及用法,今天我們 ...
  • 前言 眾所周知,現在程式員因為工作、個人興趣等對各種系統的需求越來越大,部分人電腦做的還是雙系統。其中,比較常見的有各種模擬器、虛擬機在windows上面跑Android、Linux,大家估計都習以為常,Android上面跑windows也是Android 13做的一個有趣的新功能:工作虛擬化支持( ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 1 YUM簡介 1.1 YUM簡介 CentOS使用yum和dnf 解決rpm的包依賴關係。 YUM:rpm的前端程式,可解決軟體包相關依賴性,可在多個庫之間定位軟體包,up2date的替代工具,CentOS 8 使用dnf代替了yum,不過保留 ...
  • 在開機界面,按“e”進入編輯界面 按“e”進圖下圖界面後,找到開頭為“linux16”行,在行後面加入 “init=/bin/sh” 輸入後,按快捷鍵Ctrl+x 進入單用戶模式 然後再行最後輸入mount -o remount,rw / 註意各個空格有空格 回車 在新的一行後面輸入 passwd, ...
  • 一、Vim編譯器 1.什麼是vim編譯器 Vim相當於vi的升級版 Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式員中被廣泛使用。 簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程式開發 ...
  • Redis最新超詳細版教程通俗易懂 一、Nosql概述 為什麼使用Nosql 1、單機Mysql時代 90年代,一個網站的訪問量一般不會太大,單個資料庫完全夠用。隨著用戶增多,網站出現以下問題 數據量增加到一定程度,單機資料庫就放不下了 數據的索引(B+ Tree),一個機器記憶體也存放不下 訪問量變 ...
  • 數字經濟時代,金融類App成為人們理財、購買證券股票以及辦理各項銀行業務的重要載體。科技驅動著金融行業的轉型升級,但在創新發展的同時,金融App面臨的安全風險類型與場景也在持續增加。如何更好地規避安全風險呢?小編給金融App的開發者們支幾招,幫您構建高效敏捷的應用安全能力。 金融App常見的安全風險 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...