程序员人生 网站导航

读取Assets下文件及文件写入存储卡

栏目:互联网时间:2014-11-05 08:48:55

      调用1个反编译的.so文件,查看起加密和解密情况,需要解析上万的数组,而so文件加密解密都是通过Byte来进行,又需要把String字符串转化为 Byte,当把数据直接写在代码中就会提示多Byte数组过大。最后把数组写到Assets文件加下,读取txt文本文件。

读取Assets方法以下:

<span style="font-size:14px;">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; }</span>

然后 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⑻859⑴"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } sbuf.append(str); sbuf.append(","); }

String.split具有分割数组的作用,它已某1个特殊符号为分界点然落后行数组分割。


在把加密后的字符串写到本地文件。方法以下

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; }






------分隔线----------------------------
------分隔线----------------------------

最新技术推荐