但是assets 文件不支持写入文件,如果我们要更新html 文件怎么办呢。
1、我们可以把初始版本html 文件压缩到assets 下,然后在解压到本地文件中去。如果后面有小的更新我们只需要根据文件MD5去更新
2、如果是大的更新我们只需要重新导入压缩包到assets 下面打包即可。特别注意assets 文件压缩直接最好检查一下是否包含中文,不然会解压不成功
/**/**
* 解压缩功能.
* 将zipFile文件解压到folderPath目录下.
* ZipFile 解压全部文件效率高于 ZipInputStream
* @throws Exception
*/
public static int upZipFile(File zipFile, String folderPath, ISiteFileManagetEvent event)throws IOException {
ZipFile zfile =new ZipFile(zipFile)
Enumeration zList = zfile.entries()
ZipEntry ze =null
byte[] buf =new byte[1024]
int nowLength =0
while (zList.hasMoreElements()) {
ze = (ZipEntry) zList.nextElement()
if (ze.isDirectory()) {
Log.e("upZipFile", ze.getName())
String dirstr = folderPath + ze.getName()
dirstr =new String(dirstr.getBytes("8859_1"), "GB2312")
File f =new File(dirstr)
f.mkdir()
continue
}
OutputStream os =new BufferedOutputStream(new FileOutputStream(getRealFileName(folderPath, ze.getName())))
InputStream is =new BufferedInputStream(zfile.getInputStream(ze))
int readLen =0
while ((readLen = is.read(buf, 0, 1024)) != -1) {
os.write(buf, 0, readLen)
}
nowLength +=1
event.SiteFileManagetProcess(nowLength, 201)
is.close()
os.close()
}
event.SiteFileManagetFinishEvent("")
if (zipFile !=null) {
boolean delete = zipFile.delete()
Log.e("BaseFileUtil1", delete +"")
}
zfile.close()
return 0
}
/**
* 给定根目录,返回一个相对路径所对应的实际文件名.
*
* @param baseDir 指定根目录
* @param absFileName 相对路径名,来自于ZipEntry中的name
* @return java.io.File 实际的文件
*/
public static FilegetRealFileName(String baseDir, String absFileName) {
String[] dirs = absFileName.split("/")
File ret =new File(baseDir)
String substr =null
if (dirs.length >1) {
for (int i =0i <dirs.length -1i++) {
substr = dirs[i]
try {
//substr.trim()
substr =new String(substr.getBytes("8859_1"), "GB2312")
}catch (UnsupportedEncodingException e) {
e.printStackTrace()
}
ret =new File(ret, substr)
}
if (!ret.exists())
ret.mkdirs()
substr = dirs[dirs.length -1]
try {
substr =new String(substr.getBytes("8859_1"), "GB2312")
}catch (UnsupportedEncodingException e) {
e.printStackTrace()
}
ret =new File(ret, substr)
return ret
}
return ret
}
* 复制zip 压缩文件到 本地
* @param strOutFileName 本地文件路径
* @param zipName assets 文件名称需要带文件后缀 xx.zip
* @throws IOException
*/
public static void copyBigDataToSD(Context context, String strOutFileName, String zipName)throws IOException {
InputStream myInput
OutputStream myOutput =new FileOutputStream(strOutFileName)
//操作assets 文件
myInput = context.getAssets().open(zipName)
byte[] buffer =new byte[1024]
int length = myInput.read(buffer)
while (length >0) {
myOutput.write(buffer, 0, length)
length = myInput.read(buffer)
}
myOutput.flush()
myInput.close()
myOutput.close()
}
不可以(一)、语法要求不同:1. 在html中不区分大小写,在xml中严格区分。2. 在HTML中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略
或者之类的结束标记。在XML中,是严格的树状结构,绝对不能省略掉结束标记。3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/ 字符作为结尾。这样分析器就知道不用查找结束标记了。4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。 5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。 6. 在XML文档中,空白部分不会被解析器自动删除;但是html是过滤掉空格的。(二)、标记不同:1、html使用固有的标记;而xml没有固有的标记。2、Html标签是预定义的;XML标签是免费的、自定义的、可扩展的。(三)、作用不同:1. html是用来显示数据的;xml是用来描述数据、存放数据的,所以可以作为持久化的介质!Html将数据和显示结合在一起,在页面中把这数据显示出来;xml则将数据和显示分开。 XML被设计用来描述数据,其焦点是数据的内容。HTML被设计用来显示数据,其焦点是数据的外观。2. xml不是HTML的替代品,xml和html是两种不同用途的语言。 XML 不是要替换 HTML;实际上XML 可以视作对 HTML 的补充。XML 和HTML 的目标不同HTML 的设计目标是显示数据并集中于数据外观,而XML的设计目标是描述数据并集中于数据的内容。3. 没有任何行为的XML。与HTML 相似,XML 不进行任何操作。(共同点)4. 对于XML最好的形容可能是: XML是一种跨平台的,与软、硬件无关的,处理与传输信息的工具。5. XML未来将会无所不在。XML将成为最普遍的数据处理和数据传输的工具。
在android自带浏览器中打开本地文件方法:1、在浏览器地址栏中输入file://路径
2、如在sdcard中有01.html这个文件,想用android自带浏览器打开它,只要在地址栏中输入file://sdcard/01.html即可。支持中文名。