当前位置:  编程技术>移动开发
本页文章导读:
    ▪本土监听的使用        本地监听的使用 //为tempURL添加一个监听。    [self addObserver:self forKeyPath:@"tempURL" options:NSKeyValueObservingOptionNew context:nil];-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *).........
    ▪ java 用haozip解压正常,用winrar解压报错:这个压缩文件格式未知或者数据异常,求援助        java 用haozip解压正常,用winrar解压报错:这个压缩文件格式未知或者数据错误,求援助 package com.cmsz.resource.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fi.........
    ▪ 【Service & BroadcastReceiver相干】       【Service & BroadcastReceiver相关】 android开发中如何实现开机自启动 http://gundumw100.iteye.com/blog/906188监听应用程序安装和卸载 http://zhangkun716717-126-com.iteye.com/blog/1192479使用service定期执行一个服.........

[1]本土监听的使用
    来源: 互联网  发布时间: 2014-02-18
本地监听的使用

//为tempURL添加一个监听。
    [self addObserver:self forKeyPath:@"tempURL" options:NSKeyValueObservingOptionNew context:nil];


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    [self.liShiDict setObject:self.tempURL forKey:self.tempTitle];
}

 

 

 

上面的操作就  实现了: 当属性 tempURL 变化的时候,就促发下面的方法。。


    
[2] java 用haozip解压正常,用winrar解压报错:这个压缩文件格式未知或者数据异常,求援助
    来源: 互联网  发布时间: 2014-02-18
java 用haozip解压正常,用winrar解压报错:这个压缩文件格式未知或者数据错误,求援助
package com.cmsz.resource.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

/**
 * 
 * @author pengming01
 *
 */
public class FilesManager {
	  
   
	/**
	 * 根据目录打包
	 * 
	 * @param SourcePath
	 *            打包目录
	 * @param zipFilePath
	 *            目标压缩文件路径
	 */
	public String zip(String zipFilePath, String inputFolderName)
			throws Exception {
		String zipFileName = zipFilePath; // 打包后文件名字
		File zipFile = new File(inputFolderName);
		FileOutputStream fileOut = new FileOutputStream(zipFileName);
		ZipOutputStream out = new ZipOutputStream(fileOut);
		zip(out, zipFile, "");
		out.close();
		fileOut.close();
		return zipFilePath; 
	}

	public void zip(ZipOutputStream out, File inputFolder, String base)
			throws Exception {
		if (inputFolder.isDirectory()) {
			
			File[] fl = inputFolder.listFiles();
			out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));
			base = base.length() == 0 ? "" : base + "/";
			for (int i = 0; i < fl.length; i++) {
				zip(out, fl[i], base + fl[i].getName());
			}
		} else {
			out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
			FileInputStream in = new FileInputStream(inputFolder);
			int b;
			// System.out.println(base);
			while ((b = in.read()) != -1) {
				out.write(b);
			}
			in.close();
		}
	}

	/**
	 * 根据目录打包
	 * 
	 * @param SourcePath
	 *            打包目录
	 * @param zipFilePath
	 *            目标压缩文件路径
	 */
	public void folderZip(String SourcePath, String zipFilePath) {
		File zipFile = new File(SourcePath);
		int len = zipFile.listFiles().length;
		String[] filenames = new String[len];
		byte[] buf = new byte[1024];
		try {
			File[] files = zipFile.listFiles();
			for (int i = 0; i < len; i++) {
				filenames[i] = zipFile.getPath() + File.separator
						+ files[i].getName();
			}
			ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
					zipFilePath));

			for (int i = 0; i < filenames.length; i++) {
				FileInputStream in = new FileInputStream(filenames[i]);
				out.putNextEntry(new ZipEntry(files[i].getName()));
				int length;
				while ((length = in.read(buf)) > 0) {
					out.write(buf, 0, length);
				}
				out.closeEntry();
				in.close();
			}
			out.close();
		} catch (IOException e) {
			System.out.println(e);
		}
	}

	public static void zipFile(String baseDirName, String[] fileNames,
			String targetFileName) throws IOException {
		/**
		 * 由这个 "压缩的根目录" 文件名路径得到一个 File 对象 并判断这个 File 对象表示的文件是否存在! 是否是一个文件夹!.....
		 */
		File baseDir = new File(baseDirName);
		if (!baseDir.exists() || (!baseDir.isDirectory())) {
			System.out.println("压缩失败! 根目录不存在: " + baseDirName);
			return;
		}
		// 得到这个 "压缩的根目录" 的路径.........
		String baseDirPath = baseDir.getAbsolutePath();
		/**
		 * 由这个 "目标 ZIP 文件" 文件名得到一个 压缩对象 ZipOutputStream
		 */
		File targetFile = new File(targetFileName);
		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
				targetFile));
		// "*" 表示压缩包括根目录 baseDirName 在内的全部文件 到 targetFileName文件下
		if (fileNames.equals("*")) {
			FilesManager.dirToZip(baseDirPath, baseDir, out);
		} else {
			File[] files = new File[fileNames.length];
			for (int i = 0; i < files.length; i++) {
				// 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
				files[i] = new File(baseDir, fileNames[i]);
			}
			if (files[0].isFile()) {
				// 调用本类的一个静态方法 压缩一个文件
				// CompressUtil.fileToZip(baseDirPath, file, out);
				FilesManager.filesToZip(baseDirPath, files, out);
			}

		}
		out.close();
		System.out.println("压缩成功! 目标文件名为: " + targetFileName);
	}

	/**
	  * 
	  * *************************************************多个文件目录压缩到Zip 输出流
	  * *************************************************
	  */
	 public static void filesToZip(String baseDirPath, File[] files,
	   ZipOutputStream out) throws IOException {
	   // 遍历所有的文件 一个一个地压缩
	   for (int i = 0; i < files.length; i++) {
	    File file = files[i];
	    if (file.isFile()) {
	     // 调用本类的一个静态方法 压缩一个文件
	    	FilesManager.fileToZip(baseDirPath, file, out);
	    } else {
	     /*
	      * 这是一个文件夹 所以要再次得到它下面的所有的文件
	      * 这里是自己调用自己..............递归..........
	      */
	     FilesManager.dirToZip(baseDirPath, file, out);
	    }
	   }
	 }
	public static void dirToZip(String baseDirPath, File dir,
			ZipOutputStream out) throws IOException {
		// 得到一个文件列表 (本目录下的所有文件对象集合)
		File[] files = dir.listFiles();
		/**
		 * 要是这个文件集合数组的长度为 0 , 也就证明了这是一个空的文件夹
		 * 
		 * 虽然没有再循环遍历它的必要,但是也要把这个空文件夹也压缩到目标文件中去
		 */
		if (files.length == 0) {
			// 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
			String zipFileName = getEntryName(baseDirPath, dir);
			System.out.println("zipFileName--------------------------"+zipFileName);
			ZipEntry entry = new ZipEntry(zipFileName);
			System.out.println("entry.getName()-============="+entry.getName());
			out.putNextEntry(entry);
			out.closeEntry();
		} else {
			// 遍历所有的文件 一个一个地压缩
			for (int i = 0; i < files.length; i++) {
				File file = files[i];
				if (file.isFile()) {
					// 调用本类的一个静态方法 压缩一个文件
					FilesManager.fileToZip(baseDirPath, file, out);
				} else {
					/*
					 * 这是一个文件夹 所以要再次得到它下面的所有的文件
					 * 这里是自己调用自己..............递归..........
					 */
					FilesManager.dirToZip(baseDirPath, file, out);
				}
			}
		}
	}

	/**
	 * 
	 * ************************************************* 获取待压缩文件在 ZIP 文件中的 entry
	 * 的名字! 即相对于根目录的相对路径名 *************************************************
	 * 
	 */
	public static String getEntryName(String baseDirPath, File file) {
		/**
		 * 改变 baseDirPath 的形式 把 "C:/temp" 变成 "C:/temp/"
		 */
		if (!baseDirPath.endsWith(File.separator)) {
			baseDirPath += File.separator;
			System.out.println(baseDirPath);
		}
		String filePath = file.getAbsolutePath();
		/**
		 * 测试此抽象路径名表示的文件是否是一个目录。 要是这个文件对象是一个目录 则也要变成 后面带 "/"
		 * 
		 * 这个文件对象类似于 "C:/temp/人体写真/1.jpg"
		 * 
		 * 要是这个文件是一个文件夹 则也要变成 后面带 "/" 因为你要是不这样做,它也会被压缩到目标文件中 但是却不能正解显示
		 * 也就是说操作系统不能正确识别它的文件类型(是文件还是文件夹)
		 */
		if (file.isDirectory()) {
			filePath += "\\";
		}
		int index = filePath.indexOf(baseDirPath);

		return filePath.substring(index + baseDirPath.length());
	}

	public static void fileToZip(String baseDirPath, File file,
			ZipOutputStream out) throws IOException {
		//
		FileInputStream in = null;
		ZipEntry entry = null;
		// 创建复制缓冲区 1024*4 = 4K
		byte[] buffer = new byte[1024 * 4];
		int bytes_read = 0;
		out.setEncoding("GBK");
		if (file.isFile()) {
			in = new FileInputStream(file);
			// 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
			String zipFileName = getEntryName(baseDirPath, file);
			System.out.println("baseDirPath========="+baseDirPath);
			System.out.println("===================="+zipFileName);
			entry = new ZipEntry(zipFileName);
			// "压缩文件" 对象加入 "要压缩的文件" 对象
			out.putNextEntry(entry);
			// 现在是把 "要压缩的文件" 对象中的内容写入到 "压缩文件" 对象
			while ((bytes_read = in.read(buffer)) != -1) {
				out.write(buffer, 0, bytes_read);
			}
			out.closeEntry();
			in.close();
			System.out.println("添加文件" + file.getAbsolutePath()
					+ "被添加到 ZIP 文件中!");
		}
	}

	public static void main(String[] args) {
		FilesManager zt = new FilesManager();
		File[] fileList = new File[3];
		File file1 = new File("D:\\新业务集成测试系统\\业务集成测试跟踪及注意事项.xlsx");
		File file2 = new File("D:\\新业务集成测试系统\\测试2");
		File file3 = new File("D:\\新业务集成测试系统\\资源共享验收测试\\资源共享验收测试\\测试用例_自动化网厅账单查询_20130124.xlsx");
		File zipFile = new File("D:\\测试.zip");
		fileList[1]=file2;
		fileList[2]=file3;
		fileList[0]=file1;
		ZipOutputStream zipOut;
		try {
			zipOut = new ZipOutputStream(new FileOutputStream(
					zipFile));
			try {
				FilesManager.filesToZip("D:\\新业务集成测试系统", fileList, zipOut);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	//	fileList.add(file2);
		//fileList.add(file3);
		
		
	}

}
 

    
[3] 【Service & BroadcastReceiver相干】
    来源: 互联网  发布时间: 2014-02-18
【Service & BroadcastReceiver相关】
android开发中如何实现开机自启动
http://gundumw100.iteye.com/blog/906188

监听应用程序安装和卸载
http://zhangkun716717-126-com.iteye.com/blog/1192479

使用service定期执行一个服务
http://gundumw100.iteye.com/blog/896880

利用BroadcastReceiver监听短信
http://gundumw100.iteye.com/blog/875951

使用Service和BroadcastReceiver实时监听网络状态
http://gundumw100.iteye.com/blog/1732865

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3