android 在自己的应用中实现自动解压RAR

android 在自己的应用中实现自动解压RAR,第1张

现在也可迟唤以解压 那些包含子目录的zip文件

1 /**

2 * 解压缩功能.

3 * 将zipFile文件解压到folderPath目录下盯差.

4 * @throws Exception

5 */

6 public int upZipFile(File zipFile, String folderPath)throws ZipException,IOException {

7 //public static void upZipFile() throws Exception{

8 ZipFile zfile=new ZipFile(zipFile)

9 Enumeration zList=zfile.entries()

10 ZipEntry ze=null

11 byte[] buf=new byte[1024]

12 while(zList.hasMoreElements()){

13 ze=(ZipEntry)zList.nextElement()

14 if(ze.isDirectory()){

15 Log.d("upZipFile", "ze.getName() = "+ze.getName())

16 String dirstr = folderPath + ze.getName()

17 //dirstr.trim()

18 dirstr = new String(dirstr.getBytes("8859_1"), "GB2312")

19 Log.d("upZipFile", "str = "码则凯+dirstr)

20 File f=new File(dirstr)

21 f.mkdir()

22 continue

23 }

24 Log.d("upZipFile", "ze.getName() = "+ze.getName())

25 OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(folderPath, ze.getName())))

26 InputStream is=new BufferedInputStream(zfile.getInputStream(ze))

27 int readLen=0

28 while ((readLen=is.read(buf, 0, 1024))!=-1) {

29 os.write(buf, 0, readLen)

30 }

31 is.close()

32 os.close()

33 }

34 zfile.close()

35 Log.d("upZipFile", "finishssssssssssssssssssss")

36 return 0

37 }

38

39 /**

40 * 给定根目录,返回一个相对路径所对应的实际文件名.

41 * @param baseDir 指定根目录

42 * @param absFileName 相对路径名,来自于ZipEntry中的name

43 * @return java.io.File 实际的文件

44 */

45 public static File getRealFileName(String baseDir, String absFileName){

46 String[] dirs=absFileName.split("/")

47 File ret=new File(baseDir)

48 String substr = null

49 if(dirs.length>1){

50 for (int i = 0i <dirs.length-1i++) {

51 substr = dirs[i]

52 try {

53 //substr.trim()

54 substr = new String(substr.getBytes("8859_1"), "GB2312")

55

56 } catch (UnsupportedEncodingException e) {

57 // TODO Auto-generated catch block

58 e.printStackTrace()

59 }

60 ret=new File(ret, substr)

61

62 }

63 Log.d("upZipFile", "1ret = "+ret)

64 if(!ret.exists())

65 ret.mkdirs()

66 substr = dirs[dirs.length-1]

67 try {

68 //substr.trim()

69 substr = new String(substr.getBytes("8859_1"), "GB2312")

70 Log.d("upZipFile", "substr = "+substr)

71 } catch (UnsupportedEncodingException e) {

72 // TODO Auto-generated catch block

73 e.printStackTrace()

74 }

75

76 ret=new File(ret, substr)

77 Log.d("upZipFile", "2ret = "+ret)

78 return ret

79 }

80 return ret

81 }

记得要在AndroidManifest.xml里添加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

假设或察A的绝瞎亏对路径是磨团神:c:\a

System.IO.DirectoryInfo aDir = new System.IO.DirectoryInfo("c:\\A")

System.IO.DirectoryInfo[] dirs = aDir.GetDirectories()

得到的dirs数组就是A文件夹所有的子文件夹,要得到名字就:

dirs[0].FullName

dirs[1].FullName

dirs[2].FullName

........

驱动的编译和上层应用程序的编译完全不同,作为初学者应该先了解一下,即使你还不懂得怎么写驱动程序。

首先安装DDK,然运滑后随便找一个例子来测试。在菜单中找到BUILD环境菜单执行,不同的系统要使用不同的BUILD环境。会打开一个DOS窗口,这时CD到那个例子程序,输入 build –cZ回车就可以了。 驱动程序都是用一个由DDK提供的叫build.exe的工具编译的。此程序以一个名为SOURCES的文件作为输入,该文件中包含目标可执行文件的名称、类型和要创建的可执行文件的路径,注意这个文件没有后缀名。

SOURCES的文件格式销扒:

TARGETNAME=drivername ,

- 本参数用于指定生成的设备驱动程序名称(不需后缀名),所产生的文件

- 为drivername.sys.

TARGETPATH=./lib

- 本参数用于指定生成的设备驱动程序所存放的路径. 一般采用./lib.

TARGETTYPE=DRIVER

- build能够生成许多不同的目标对象,设备驱动程序一般选用 DRIVER.

INCLUDES=path1path2...

- 本参数是可选的, 用于指定其他的#include文件的搜索路径.

TARGETLIBS=lib1lib2...

- 本参数是可选的, 用于指定其他的lib库文件的搜索路径.

SOURCES=file1.c file2.c ...

- 本参数用于指定需被编译的全部源文件名称, 后缀名不能省略,文件名之间用空格分开.

SOURCES文件是必需的,如果没有它则表示没有任何源文件需要编译。

如果要换行可以用 ‘/’ 符号,表示对上一行的继续。

也可以创建DIRS文件,DIRS文件用于指定在当前目录下必须创建的子目录。

DIRS文件格式:

DIRS文件的内容由一系列用空格分开的目录名组成

DIRS = /

subdir1 /

subdir2 /

subdir3

DIRS文件是可选的。

有的时候,会提示找不到依赖的文件(.h,.lib 之类),其实旁斗腊设置好 source 文件的

INCLUDES和TARGETLIBS就可以,我第一次编译时就碰到这个问题,和VC环境区别较大,但习惯就好。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12268763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存