Android:由properties文件引出的Assets读取问题

转载请标明地址 QuincySxhttp://www.jianshu.com/p/9aa75e7d7e6c

众所周知Android中提供了一个存放参数的东西——SharedPreferences(简称sp)

但是呢我今天在存储参数时没有使用sp,而是用了Properties来存放,But 一路趟雷,我决定要分享一下这个历程 废话不多说进入正题(可能作者水平问题可能理解错误,希望大神指正)


使用Properties我们一般需要

  • InputStream

  • OutputStream

如果对Properties用法不了解可以参考Java中读写Properties

但是在Android中我们的properties文件都是放在assets文件中的,获取方式三种

(假设properties文件放在assets根目录下名称叫xxx.properties)

InputStream 获取方式

第一种方式

InputStream inputStream = content.getAssets().open("xxx.properties");

通过AssetManager来获取 InputStream

AssetManager官方API(无须科学上网)

第二种方式

InputStream inputStream2 = getClass().getResourceAsStream("/assets/xxx.properties");

通过绝对路径来获取

第三种方式(获取不到)

String path = "file:///android_asset/xxx.properties";

//这个映射链接,可以在webview中使用,本想能否通过这种方法获取可是失败了,我实验了两种方式

//第一种

URL url=new URL(path);

InputStream inputStream1 = url.openStream();

//第二种

URLConnection urlConnection = url.openConnection();

urlConnection.connect();

InputStream inputStream3 = urlConnection.getInputStream();

第三种方式经过我实验是取不到的(这种方式是随意实验的)

OutputStream 获取方式

InputStream 取到了我们可以进行读数据,可是修改还做不了,我参考了AssetManager API好像没有方法来获取OutputStream

左思右想 File 也获取不到这个OutputStream 获取遇到了难题

在网上找到了InputStream 转成 OutputStream的方法

public ByteArrayOutputStream parse(InputStream in) throws Exception {

ByteArrayOutputStream swapStream = new ByteArrayOutputStream();

int ch;

while ((ch = in.read()) != -1) {

swapStream.write(ch);

}

return swapStream;

}

通过这个方法可以得到OutputStream的方法从而可以写文件

总结

这样来就可以对assets中的文件进行读写,不只是Properties文件,这也算是一个小插曲吧

作者水平问题大神勿喷 有问题可以提我们一起解决

IT文库 » Android:由properties文件引出的Assets读取问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址