如何一行代码解决文件读+写+删(更新版)
2017-04-01 12:34
260 查看
如果你是一个移动应用开发者,那么您肯定会经常与文件存储与读取打交道吧!但是有没有发现每次都得通过好长好长的代码来实现呢,很烦是不是,那么有没有什么便捷的方法就能实现呢,比如调用一行简短的代码就实现各种读写操作呢?答案是肯定的,因为在这个开源的时代,任何事情都可以极其简单的得到解决了,那么下面就让我们来看看是什么开源项目让我们如此简单实现文件操作的。
根据最新API介绍,开源作者已经将PC端的文件存储加入此项目啦,以后电脑文件系统也可以用同样的方法搞定啦!因为加入了电脑文件系统的操作,所以API在原来的基础上也是发生了很大的变化,需要的童鞋快来学习学习吧!
开源项目:FileFactory
开源作者:ThreeWater
项目API简介:
1.继承结构:
StoreOrGain--->setGoal--->SetPath--->FileFactory
2.内容添加:
PathManager--->路径枚举Index
storeNext(String content)方法
3.使用规范:
因为这个项目的特点是一行代码解决所以问题,所以要严格遵守规范使用才行。
3.1 实例对象 FileManager
理论上可以直接实例SetPath ,因为两者是继承关系 ,但为了后面便于管理 ,因此项目建议统一使用FileManager进行对象实例化。 代码如下:
太简单了 ,什么参数都不用 ,不像JDK中File的实例还得传String 。
3.2 路径的设置
假设这么一个场景 ,我打算在SD卡中保存一个用户对系统的设置属性 ,并且用当前代码的类名作为命名空间 ,后缀为config 那么我们就可以使用实例对象的设置完整路径方法 setPath(String path)
代码如下:
我们这里先让对象持有我们期待的文件路径 ,当调用这个方法时 ,系统就会对路径进行检测了 。上面说一行代码完成操作 ,而这里并没有文件读写啊!不信就往下看吧
注意:这里的路径最前面必须指定"sdcard/"或者"/sdcard" ,因为这个本来就是操作SD卡的 。
3.3 写入内容
吧 这时我们已经完成路径设置 ,那么 ,如果我们打算在这个系统设置文件中写入"我是一名程序员"时怎么做呢?
看代码:
3.4 内容读取
向文件写入内容后我们如何拿到文件里的内容呢?
代码如下:
这里可以看到有两个提取文件内容的方法 ,没错 ,这就是这个项目的一个特殊之处 ,怎么说呢!
gain( )方法将读取到的内容转化成一整个字符串 ,即使文件中的内容有几十上百行 ,读取后都会变成一行而已 。为什么要这样做呢 ?其实当我们要对一个文件内容进行诸如data1.substring(3,5) 提取特定内容时 ,字符串不应该存在分行符合"\n"的 ,这时gain( )方法就发挥极大作用了 ,省去开发者对分行符合的去除工作 ,知道的朋友应该知道有多难了 。
gainWithNative( )方法将文件内容原封不动的读取出来 ,也就是说 ,这时文件内容为
"大家好
我是一名程序员"
那么通过gainWithNative( )方法就可以将内容以分行的形式提取了 ,如果想在TextView中分行展示文件内容等情况 ,都可以使用这个方法 。
3.5 文件删除
想必大家以前为了删除一个文件时 ,什么实例File对象 ,检测文件是否存在 ,存在时删除 ,很繁琐的操作是不是 ,那么这个项目总算给大家带来福音了 。
没错 ,在原来的基础上加上delete( ) ,就这么一行代码省去了原来好多的工作啊 。
真的是 ,一行代码解决所以繁琐的开发工作了有没有 ,那么 ,在这个项目里面涉及到了多个方法间的连缀调用 ,这个在编程中也是十分好的设计 ,那么关于方法连缀调用的介绍会在讲《如何让方法参数列表更简洁》中为大家呈现 。
最后再贴上这个项目的Jar文件+源码 链接
点击打开源码与Jar
源码Github
往期文章阅读推荐 图片加载之Bitmap(动画系列1)
根据最新API介绍,开源作者已经将PC端的文件存储加入此项目啦,以后电脑文件系统也可以用同样的方法搞定啦!因为加入了电脑文件系统的操作,所以API在原来的基础上也是发生了很大的变化,需要的童鞋快来学习学习吧!
开源项目:FileFactory
开源作者:ThreeWater
项目API简介:
1.继承结构:
StoreOrGain--->setGoal--->SetPath--->FileFactory
2.内容添加:
PathManager--->路径枚举Index
storeNext(String content)方法
3.使用规范:
因为这个项目的特点是一行代码解决所以问题,所以要严格遵守规范使用才行。
3.1 实例对象 FileManager
理论上可以直接实例SetPath ,因为两者是继承关系 ,但为了后面便于管理 ,因此项目建议统一使用FileManager进行对象实例化。 代码如下:
FileFactory mFile = new FileFactory() ;
太简单了 ,什么参数都不用 ,不像JDK中File的实例还得传String 。
3.2 路径的设置
假设这么一个场景 ,我打算在SD卡中保存一个用户对系统的设置属性 ,并且用当前代码的类名作为命名空间 ,后缀为config 那么我们就可以使用实例对象的设置完整路径方法 setPath(String path)
代码如下:
public void demo() { mFile.setIndex().setPath("sdcard/"+getClass().getName()+".config"); }
我们这里先让对象持有我们期待的文件路径 ,当调用这个方法时 ,系统就会对路径进行检测了 。上面说一行代码完成操作 ,而这里并没有文件读写啊!不信就往下看吧
注意:这里的路径最前面必须指定"sdcard/"或者"/sdcard" ,因为这个本来就是操作SD卡的 。
3.3 写入内容
吧 这时我们已经完成路径设置 ,那么 ,如果我们打算在这个系统设置文件中写入"我是一名程序员"时怎么做呢?
看代码:
public void demo() { mFileManager.setPath("sdcard/"+getClass().getName()+".config").store("我是一名程序员"); }没错我们只是在原来的那行代码上追加了一个store(String data) 方法 ,传入您想存储的任何数据即可写入对应路径的文件中 ,怎么样是不是一行代码就完事了呢!如果你以为这个项目这样就为了那你就太看不起这个项目了 ,那接下来就继续看看其他功能吧!
3.4 内容读取
向文件写入内容后我们如何拿到文件里的内容呢?
代码如下:
public void pathDemo() { String data1= mFileManager.setPath("sdcard/"+getClass().getName()+".config").gain(); String data2= mFileManager.setPath("sdcard/"+getClass().getName()+".config").gainWithNative(); }
这里可以看到有两个提取文件内容的方法 ,没错 ,这就是这个项目的一个特殊之处 ,怎么说呢!
gain( )方法将读取到的内容转化成一整个字符串 ,即使文件中的内容有几十上百行 ,读取后都会变成一行而已 。为什么要这样做呢 ?其实当我们要对一个文件内容进行诸如data1.substring(3,5) 提取特定内容时 ,字符串不应该存在分行符合"\n"的 ,这时gain( )方法就发挥极大作用了 ,省去开发者对分行符合的去除工作 ,知道的朋友应该知道有多难了 。
gainWithNative( )方法将文件内容原封不动的读取出来 ,也就是说 ,这时文件内容为
"大家好
我是一名程序员"
那么通过gainWithNative( )方法就可以将内容以分行的形式提取了 ,如果想在TextView中分行展示文件内容等情况 ,都可以使用这个方法 。
3.5 文件删除
想必大家以前为了删除一个文件时 ,什么实例File对象 ,检测文件是否存在 ,存在时删除 ,很繁琐的操作是不是 ,那么这个项目总算给大家带来福音了 。
mFileManager.setPath("sdcard/"+getClass().getName()+".config").delete();
没错 ,在原来的基础上加上delete( ) ,就这么一行代码省去了原来好多的工作啊 。
真的是 ,一行代码解决所以繁琐的开发工作了有没有 ,那么 ,在这个项目里面涉及到了多个方法间的连缀调用 ,这个在编程中也是十分好的设计 ,那么关于方法连缀调用的介绍会在讲《如何让方法参数列表更简洁》中为大家呈现 。
最后再贴上这个项目的Jar文件+源码 链接
点击打开源码与Jar
源码Github
往期文章阅读推荐 图片加载之Bitmap(动画系列1)
相关文章推荐
- VFP中,如何把指定目录信息(包括子目录)存入TXT文本文件!(已解决,代码实例)
- SVN(TortoiseSVN)详细教程(三)--SVN更新及如何解决冲突文件
- SVN利用post-commit hooks自动同步代码到生产环境,解决大数量文件更新同步问题
- 如何在Idea中使用svn,以及代码更新报错的问题解决
- 在Windows下如何解决Cocos2d-x中实例代码TestCpp找不到lib库文件的问题
- SVN项目名变更,更新代码过期和本地代码文件被删除问题解决
- 从键盘多行输入,写入TXT文件并读取输出~只显示第一行,如何解决?(答案见代码)
- 在Windows如何解决下Cocos2d-x示例代码TestCpp我找不到lib问题库文件
- IDE工具中更新代码,如何设置不提交文件
- 一行代码,解决百度云大文件下载限制
- SVN利用post-commit hooks自动同步代码到生产环境,解决大数量文件更新同步问题
- 如何解决xcode每次运行不clean就不更新资源文件的问题
- 如何解决修改js文件后火狐浏览器无法更新的问题
- 一行代码,解决百度云大文件下载限制
- iOS 中C如何调用Objective c的代码更新界面问题解决
- 如何解决ASP.NET下载时的中文文件名乱码,与TXT文件中存在代码两个问题
- 如何解决win10系统更新出现错误代码0x80070057
- Visual Assist X V10.5.1736的破解文件解决了代码提示问题,强烈推荐更新 (2009.09.18 RC)
- NTLDR is missing 文件丢失如何解决
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题(非原创,摘自书中)