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:\aSystem.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环境区别较大,但习惯就好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)