哥几个,最近折腾一个自己的小玩意儿,真给我累够呛。起初就想着弄个小程序,帮我整理点文件,就是那种每次都要手动选路径,选模式的活儿。一开始嘛图省事儿,路径我直接写死在代码里了,模式也是,用啥就改结果没两天,我自己都懵了,每次想换个路径,或者换个处理方式,都得跑去改代码,然后再打包,再运行,那叫一个麻烦。
本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu
后来我就寻思了,这不行,得找个能存配置的地方。总不能每次都跟代码较劲?我这人平时就喜欢在网上瞎逛,看别人都咋弄。有一天刷到一个帖子,有人提了一嘴什么“偏好加载器”,我当时就觉得这名字挺玄乎的,但一想,这不就是我想要的吗?能把那些路径、模式这些东西单独拎出来,每次运行的时候自己去读,省了我多少事儿!
说干就干,我开始到处找资料,也没个头绪。网上这东西,说得都挺高大上的,什么架构,设计模式,我一听就头疼,我就想知道怎么把我那几个路径和模式存好就行。然后就有人提到了这个“preferenceloader”。我当时就觉得,听着还挺顺耳的,名字里带个“preference”,不就是偏好嘛正合我意。
找是找到了,但怎么用,这又是个大难题。我记得当时我找到的,就管它叫“源”。一开始我就纳闷了,这“源”是个是下载下来一个文件,还是直接把代码复制粘贴过来?琢磨半天,我才搞明白,它通常就是一些现成的代码片段,或者是个小包,你得把它弄到你的项目里去,才能用。
我依葫芦画瓢,找到了一段看着像样子的代码。我当时想,这应该就是那“源”了。我照着别人的例子,直接就把那段代码往我程序里一扔。结果一运行,傻眼了,各种报错,屏幕上红字一片。我当时就想骂街了,这什么玩意儿,不是说简单吗?
后来我才反应过来,哪有那么简单的事儿。它让你把“源”弄过来,不是让你随便一扔就完事儿了。你得知道它到底要干要放在哪儿。我就开始琢磨,是不是我搞错了顺序,或者是没给它准备好“环境”。
我那几天真是魔怔了,一有空就泡在网上,各种搜。终于,在一个不起眼的小角落里,我看到一个老哥写了个特详细的帖子,就跟讲故事似的。我这才明白,原来这玩意儿,它不是你扔进去就能用的。
配置的弯路和明路
你得把那个“源”给搞到你项目里。我当时是直接把它那些代码文件,复制粘贴到了我项目里一个专门放工具的文件夹。
这玩意儿不是凭空能变的,它得有个“地方”来存你的那些偏好设置。我学着那个老哥的办法,自己先手动创建了一个文件,就一个普普通通的文本文件。名字我也没敢瞎起,就叫了个“*”或者“*”之类的,反正就是一看就知道是配置文件的那种。
然后就到了核心了。这个“preferenceloader”它得知道去哪里找你的配置文件。所以你得在你的代码里,告诉它:“喂,我的配置文件在这里,你快去读!”
-
第一步,先把“源”请进门: 我就是把那几个核心的`preferenceloader`相关的文件,直接拷到我项目里一个叫`utils`或者`lib`的文件夹里。这样,我的程序就能“看见”它了。
-
第二步,给它搭个窝: 我自己手动在项目根目录里建了一个文件,比如叫`app_*`。里面就写了些简单的东西:
[Paths]source_folder = C:/MyFiles/Input
output_folder = C:/MyFiles/Output
[Mode]
processing_mode = fast
就这样,很简单,就几行字。
-
第三步,指明方向让它读: 这是最关键的。我在我的主程序里,就写了几行代码,大体就是这样:
// 告诉preferenceloader去哪里找配置文件PreferenceLoader loader = new PreferenceLoader("app_*");
// 然后就可以从里面取东西了
String sourcePath = *("Paths", "source_folder");
String outputPath = *("Paths", "output_folder");
String mode = *("Mode", "processing_mode");
// 之后我就可以用这些路径和模式了
*("源文件夹是:" + sourcePath);
*("目标文件夹是:" + outputPath);
*("处理模式是:" + mode);
我当时第一次成功跑通的时候,屏幕上打印出来的,就是我那配置文件里的路径和模式,我当时差点没跳起来!
哥几个,你们是不知道,就为了这么点儿事,我熬了几个晚上。但真跑通了,那感觉,真是太爽了。以后我要改什么路径,什么模式,直接去那个`app_*`文件里改就行了,程序都不用重新编译,重新打包,直接运行,它自己就读到新设置了。这下我的小工具,用起来别提多顺手了。