原理:
最简单的数据加密就是采用Base64,虽然会带有数据冗余,但是写法简单,不用做过多的修改,其实也可以采用异或加密。
代码:
这里就直接上代码吧,写法很简单。
public static final boolean DownlaodAppFile(Context mContext, String url, String cacheName, boolean replace) {
File root = mContext.getExternalCacheDir();
if (!root.exists()) {
root.mkdir();
}
String root_path = root.getAbsolutePath();
File cacheFile = new File(root_path + "/" + cacheName);
if (cacheFile.exists()) {
if (!replace) {
return true;
}
}
File tmpFIle = new File(root_path + "/" + cacheName + ".tmp");
URL mURL = null;
try {
mURL = new URL(url);
} catch (MalformedURLException e) {
Log.i("Finals", "URL error");
e.printStackTrace();
return false;
}
HttpURLConnection conn = null;
FileOutputStream fos = null;
Base64OutputStream bos = null;
try {
fos = new FileOutputStream(tmpFIle);
bos = new Base64OutputStream(fos, 45);
conn = (HttpURLConnection) mURL.openConnection();
if (conn.getResponseCode() == 200) {
// 创建连接
InputStream is = conn.getInputStream();
byte[] buffer = new byte[1024];
// 循环获取数据
int len = 0;
while ((len = is.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
// 释放资源
bos.close();
fos.close();
is.close();
conn.disconnect();
bos = null;
fos = null;
is = null;
conn = null;
tmpFIle.renameTo(cacheFile);
System.out.println("下载完成");
}
} catch (IOException e) {
e.printStackTrace();
Log.i("Finals", "Url connection error");
return false;
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
public static final String ReadAppFile(Context context, String cacheName) {
File root = context.getExternalCacheDir();
String rootpath = root.getAbsolutePath();
File cacheFile = new File(rootpath + "/" + cacheName);
if (!cacheFile.exists()) {
return "";
}
String result = "";
try {
FileInputStream fis = new FileInputStream(cacheFile);
Base64InputStream bis = new Base64InputStream(fis, 45);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[512];
int len = 0;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
result = bos.toString();
bos.close();
bis.close();
fis.close();
bos = null;
bis = null;
fis = null;
} catch (IOException e) {
e.printStackTrace();
return "";
}
return result;
}