SAF.NET_0.5.0.9 发布

非常高兴,SAF.NET终于在今天 0.5.0.9 发布了,在这个版本里,修正了一些以前的错误,相当大的几个类完成了算法的优化,并且也新增加了一些实用类。最重要的是修改了一个重要类的设计,他可以作为SAF.NET将来发展的基础,我非常高兴的完成了这次比较大的修改。

  维护一个类库是相当不容易的,除了修改代码之外,还要维护相应的文档,在这次发布版里,文档上的疏漏再所难免,希望朋友们能够见谅,也希望大家留言给我,以便修正。

  在这次发布版里,关于数据库驱动部分,没有做测试,因为这一部分是基于以前很大一部分代码,且我自己的算法基本没有,即使出了问题大家也很容易修正。在SRC目录里附带了他们的原代码,在LGPL下发布,欢迎大家修正。这些代码和Sinoprise.Data里面的类的依赖关系还是健康的。
  在DEMO目录里,附带了三个示例程序,一个是控制台的进度条,一个是多语言框架,一个是Rmb的DEMO,大家有什么问题可以到华竹论坛进行讨论。至于这些类和其他类的详细说明,在有空的时候,我将把这些文档补全。

  由于时间有限,对于这些类的测试很少,只是对于几个比较重要的类进行了简单的测试,有什么问题可以在华竹论坛发布,我将即时修正。
  这些组件大家可以放心使用,无论你用于免费程序,开源程序,还是商业程序。但我保留一切权利。希望大家喜欢。

  华竹论坛地址: http://www.sinoprise.com
下载地址: http://www.sinoprise.com/showtopic-473.aspx

                    尹曙光
                  mail/MSN: shg@sinoprise.com
                    2009-03-09

================================================================
0.5.9

Sinoprise.dll:

增加简单对象缓冲池类:SimpleCache
修改INIFile部分算法,对原先基于delphi的接口进行扩充和改良,索引键对字符大小写不敏感
对PathEx增加多目录的路径生成
添加MD5Crypto,SHA1Crypto和SimpleEncrypt加密类
添加Comb类型
增强ConvertEx类
增加MimeTypes类
增加StringValueItem和StringValueList,以处理类似于{prefix|value}{prefix|value}{prefix|value}...的数据
增加ConsoleProcess控制台进度条类
重新设计Base64类
多语言国际化程序框架

Sinoprise.Data:

去掉DbType,减少SAF.Data对于数据库类型的依赖
增强DbParam,增加Assembly,Class,Prefix属性
优化Sinoprise.Data代码,将数据库组件和数据库完全解耦

Sinoprise.Chinese:

以Rmb类替换掉Money类
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中,可以使用 SAF(Storage Access Framework)读写文件。 SAF 可以让用户选择他们想要使用的文件浏览器应用来访问文件系统。以下是一个简单的示例代码: 1. 读取文件: ``` private static final int READ_REQUEST_CODE = 42; public void performFileSearch() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); startActivityForResult(intent, READ_REQUEST_CODE); } @Override public void onActivityResult(int requestCode, int resultCode, Intent resultData) { if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) { Uri uri = null; if (resultData != null) { uri = resultData.getData(); try { InputStream inputStream = getContentResolver().openInputStream(uri); // 读取输入流中的数据 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } ``` 2. 写入文件: ``` private static final int WRITE_REQUEST_CODE = 43; public void performFileSave() { Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); intent.putExtra(Intent.EXTRA_TITLE, "my_file.txt"); startActivityForResult(intent, WRITE_REQUEST_CODE); } @Override public void onActivityResult(int requestCode, int resultCode, Intent resultData) { if (requestCode == WRITE_REQUEST_CODE && resultCode == Activity.RESULT_OK) { Uri uri = null; if (resultData != null) { uri = resultData.getData(); try { OutputStream outputStream = getContentResolver().openOutputStream(uri); // 写入数据到输出流中 outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } ``` 在这两个示例代码中,我们使用 Intent.ACTION_OPEN_DOCUMENT 和 Intent.ACTION_CREATE_DOCUMENT 来启动 SAF。在 onActivityResult 方法中,我们可以获取到用户选择的文件的 Uri,并且可以通过 getContentResolver().openInputStream 和 getContentResolver().openOutputStream 来读取和写入数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值