本文实例讲述了Android开发实现读取Assets下文件及文件写入存储卡的方法。分享给大家供大家参考,具体如下:
调用一个反编译的.so文件,查看起加密和解密情况,需要解析上万的数组,而so文件加密解密都是通过Byte来进行,又需要把String字符串转化为 Byte,当把数据直接写在代码中就会提示多Byte数组过大。最后把数组写到Assets文件加下,读取txt文本文件。
读取Assets方法如下:
public String getFromAssets(String fileName) { String result = ""; try { InputStream in = getResources().getAssets().open(fileName); // 获取文件的字节数 int lenght = in.available(); // 创建byte数组 byte[] buffer = new byte[lenght]; // 将文件中的数据读到byte数组中 in.read(buffer); result = EncodingUtils.getString(buffer, ENCODING); } catch (Exception e) { e.printStackTrace(); } return result; }
然后
String strEn = getFromAssets("encode.txt");
txt中的文本文件是str,str,str这种形式,然后把
String[] encode1 = strEn.split(",");
通过字符串把 读取的字符串转化成字符串数组。
for(int i=0;i<encode1.length;i++){ sendString = encode1[i]; // sbuf.append(sendString+","); try { sendBytes = sendString.getBytes("UTF8"); byte[] s = Base64Encoder.B64Encode(sendBytes); str = new String(s, "ISO-8859-1"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } sbuf.append(str); sbuf.append(","); }
String.split
具有分割数组的作用,它已某一个特殊符号为分界点然后进行数组分割。
再把加密后的字符串写到本地文件。方法如下
public String saveInfo2File(String mString) { StringBuffer sb = new StringBuffer(); try { long timestamp = System.currentTimeMillis(); String fileName = "encut" + ".txt"; if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { String spath = Environment.getExternalStorageDirectory() .getPath() + "/A1/"; File sdir = new File(spath); if (!sdir.exists()) sdir.mkdirs(); FileOutputStream fos = new FileOutputStream(spath + fileName); sb.append(mString); fos.write(sb.toString().getBytes()); fos.close(); } return fileName; } catch (Exception e) { } return null; }
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android文件操作技巧汇总》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。