sách gpt4 ai đã đi

Một cách tiếp cận mới để hiện thực hóa tương tác gốc Blazor/MAUI (Phần 2)

In lại 作者:撒哈拉 更新时间:2025-02-11 19:14:04 57 4
mua khóa gpt4 Nike

NativeApi.cs

内部部分类,该类提供了几个与文件操作相关的方法.

get_config() 方法:

   public Task get_config() { printerName = Preferences.Default.Get(PrinterNameKey, printerName); return Task.FromResult(printerName); }   
  • 该方法从应用程序的首选项中获取打印机名称 (printerName)。Maui 基础 - Preferences 存储和检索应用程序的首选项
  • 使用 Preferences.Default.Get 方法获取存储的打印机名称,如果没有存储,则返回默认值。
  • 返回一个包含打印机名称的任务。

open_file_dialog() 方法:

   public async Task open_file_dialog() { //work in ui thread var res = await MainThread.InvokeOnMainThreadAsync(async () => { try { var result = await FilePicker.Default.PickAsync(new PickOptions()); if (result == null) { return ""; } using var stream = await result.OpenReadAsync(); StreamReader reader = new StreamReader(stream); return Convert.ToBase64String(Encoding.UTF8.GetBytes(reader.ReadToEnd())); } catch (Exception e) { var err = e.Message; return err; } }); return res; }   
  • 该方法在 UI 线程上运行,打开文件选择对话框。
  • 使用 FilePicker.Default.PickAsync 方法打开文件选择器。
  • 如果用户没有选择文件,返回空字符串。
  • 如果选择了文件,读取文件内容并将其转换为 Base64 编码的字符串。
  • 如果发生异常,返回异常消息。

save_file(string data, string fileName) 方法:

   public async Task save_file(string data, string fileName) { try { string targetFile = System.IO.Path.Combine(FileSystem.Current.AppDataDirectory, fileName); using FileStream outputStream = File.OpenWrite(targetFile); using StreamWriter streamWriter = new(outputStream); await streamWriter.WriteAsync(data); return $"file path:{targetFile.Replace("\\","\\\\")}"; } catch (Exception e) { var err = e.Message; return err; } }
  • 该方法将给定的数据保存到指定文件名的文件中。
  • 使用 Path.Combine 方法构建目标文件路径,该路径位于应用程序的数据目录中。
  • 使用 File.OpenWrite 方法打开文件流,并使用 StreamWriter 写入数据。
  • 写入完成后,返回文件路径。
  • 如果发生异常,返回异常消息。

这些方法提供了基本的文件操作功能,包括获取配置、打开文件对话框和保存文件 。

如何在 Preferences 中存储自定义对象?

Maui 基础 - Preferences 存储和检索应用程序的首选项 。

Mã hoàn chỉnh

// ********************************** // Densen Informatica 中讯科技 // 作者:Alex Chow // e-mail:zhouchuanglin@gmail.com // ********************************** using System.Text; using System.Text.Json; namespace test1; internal partial class NativeApi : object { ///  /// 从应用程序的首选项中获取打印机名称 (printerName) ///  ///  public Task get_config() { printerName = Preferences.Default.Get(PrinterNameKey, printerName); return Task.FromResult(printerName); } ///  /// 打开文件选择对话框,读取文件内容并将其转换为 Base64 编码的字符串返回 ///  /// 文件内容 Base64 编码的字符串 public async Task open_file_dialog() { //work in ui thread var res = await MainThread.InvokeOnMainThreadAsync(async () => { try { var result = await FilePicker.Default.PickAsync(new PickOptions()); if (result == null) { return ""; } using var stream = await result.OpenReadAsync(); StreamReader reader = new StreamReader(stream); return Convert.ToBase64String(Encoding.UTF8.GetBytes(reader.ReadToEnd())); } catch (Exception e) { var err = e.Message; return err; } }); return res; } ///  /// 将给定的数据保存到指定文件名的文件,返回文件路径 ///  ///  ///  /// 文件路径 public async Task save_file(string data, string fileName) { try { string targetFile = System.IO.Path.Combine(FileSystem.Current.AppDataDirectory, fileName); using FileStream outputStream = File.OpenWrite(targetFile); using StreamWriter streamWriter = new(outputStream); await streamWriter.WriteAsync(data); return $"file path:{targetFile.Replace("\\", "\\\\")}"; } catch (Exception e) { var err = e.Message; return err; } } ///  /// 存储自定义对象 User, 将自定义对象序列化为 string 类型,然后再存储 ///  ///  public void SaveUser(User user) { string jsonString = JsonSerializer.Serialize(user); Preferences.Set("user", jsonString); } ///  /// 检索自定义对象 User, 从 Preferences 中检索字符串,然后将其反序列化为自定义对象 ///  ///  public User? GetUser() { string jsonString = Preferences.Get("user", string.Empty); if (string.IsNullOrEmpty(jsonString)) { return null; } return JsonSerializer.Deserialize(jsonString); } } ///  /// 在 Preferences 中存储自定义对象, https://www.cnblogs.com/densen2014/p/18710319 ///  public class User { public string? Name { get; set; } public int Age { get; set; } }

最后此篇关于另辟新径实现Blazor/MAUI本机交互(二)的文章就讲到这里了,如果你想了解更多关于另辟新径实现Blazor/MAUI本机交互(二)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

57 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com