文件操作
2015-10-22 14:02
295 查看
1.按行读取文件,并且往文件指定某行之后添加新字符串
在String textForAttention=\"\";"下添加
2.压缩文件
3.执行可执行文件并且生成的数据保存在新文件
4.单线程复制文件最快方法,文件越大越有优势
在String textForAttention=\"\";"下添加
public static boolean updateJinTengFeiTpResolution(String srcWidth,String srcHeight,String desWidth,String desHeight,boolean isModifySwitch) { String px; // String parentPath = Constant.CUSTOMER_BOOT_PATH + "\\frameworks\\base\\core\\java\\android\\widget"; String parentPath="Z:\\lf96\\prize_project\\pcba\\k3\\prize_cu\\cu_LFE_K362W\\frameworks\\base\\core\\java\\android\\widget"; String path = parentPath + "\\TextView.java"; // String mainFilePath = System.getProperty("user.dir") + "\\external\\TextView.java"; String mainFilePath = "./external/TextView.java"; System.out.println("mainFilePath="+mainFilePath); File file = new File(parentPath); if (!file.exists()) { file.mkdirs(); } try { copyFile(mainFilePath, path, true); FileInputStream fis = new FileInputStream(path); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); String line = ""; StringBuffer sb = new StringBuffer(); while ((line = br.readLine()) != null) { if(line.contains("String textForAttention=\"\";")){ if(isModifySwitch){ sb.append("\t"+"\t"+"boolean isModifySwitch="+isModifySwitch+";"+"\n"); sb.append("\t"+"\t"+"String srcWidth=\""+srcWidth+"\";"+"\n"); sb.append("\t"+"\t"+"String srcHeight=\""+srcHeight+"\";"+"\n"); sb.append("\t"+"\t"+"String desWidth=\""+desWidth+"\";"+"\n"); sb.append("\t"+"\t"+"String desHeight=\""+desHeight+"\";"+"\n"); }else{ sb.append("\t"+"\t"+"boolean isModifySwitch="+isModifySwitch+";"+"\n"); sb.append("\t"+"\t"+"String srcWidth=\""+0+"\";"+"\n"); sb.append("\t"+"\t"+"String srcHeight=\""+0+"\";"+"\n"); sb.append("\t"+"\t"+"String desWidth=\""+0+"\";"+"\n"); sb.append("\t"+"\t"+"String desHeight=\""+0+"\";"+"\n"); } } } BufferedWriter writer = new BufferedWriter(new FileWriter(path)); writer.write(sb.toString()); writer.close(); br.close(); isr.close(); fis.close(); } catch (FileNotFoundException e) { MyLogger.print("updateTpResolution--->" + e.getMessage()); e.printStackTrace(); } catch (IOException e) { MyLogger.print("updateTpResolution--->" + e.getMessage()); e.printStackTrace(); } return true; }
2.压缩文件
/** * 将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下 * * @param sourceFilePath * :待压缩的文件路径 * @param zipFilePath * :压缩后存放路径 * @param fileName * :压缩后文件的名称 * @return */ public static boolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) { boolean flag = false; File sourceFile = new File(sourceFilePath); FileInputStream fis = null; BufferedInputStream bis = null; FileOutputStream fos = null; ZipOutputStream zos = null; if (sourceFile.exists() == false) { System.out.println("待压缩的文件目录:" + sourceFilePath + "不存在."); } else { try { File zipFile = new File(zipFilePath + "/" + fileName + ".zip"); if (zipFile.exists()) { System.out.println(zipFilePath + "目录下存在名字为:" + fileName + ".zip" + "打包文件."); } else { File[] sourceFiles = sourceFile.listFiles(); if (null == sourceFiles || sourceFiles.length < 1) { System.out.println("待压缩的文件目录:" + sourceFilePath + "里面不存在文件,无需压缩."); } else { fos = new FileOutputStream(zipFile); zos = new ZipOutputStream(new BufferedOutputStream(fos)); byte[] bufs = new byte[1024 * 10]; for (int i = 0; i < sourceFiles.length; i++) { // 创建ZIP实体,并添加进压缩包 ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName()); zos.putNextEntry(zipEntry); // 读取待压缩的文件并写进压缩包里 fis = new FileInputStream(sourceFiles[i]); bis = new BufferedInputStream(fis, 1024 * 10); int read = 0; while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) { zos.write(bufs, 0, read); } } flag = true; } } } catch (FileNotFoundException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } finally { // 关闭流 try { if (null != bis) bis.close(); if (null != zos) zos.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } return flag; }
3.执行可执行文件并且生成的数据保存在新文件
/** * 执行CheckSum_Gen程序 * * @param checksum * :可执行文件路径 * @param target * :生成的文件存放路径 * @return */ public static boolean checkSum(String checksum, String target) { try { String[] ss = { "cmd.exe", "/k", "start", checksum }; Runtime.getRuntime().exec(ss, null, new File(target)); } catch (Exception e) { e.printStackTrace(); System.out.println(e.toString()); return false; } return true; }
4.单线程复制文件最快方法,文件越大越有优势
public static void nioTransferCopy(File source, File target) { FileChannel fc = null; FileChannel fco = null; try { fc = new FileInputStream(source).getChannel(); fco = new RandomAccessFile(target, "rw").getChannel(); ByteBuffer buf = ByteBuffer.allocate(1024); while (fc.read(buf) != -1) { buf.flip(); fco.write(buf); buf.clear(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { fc.close(); fco.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- 如何给第三方人员提供oracle接口
- (138)子数组之和
- ArcGIS教程:收缩 (Spatial Analyst)
- 关于数组TOP K算法(快排及最小堆方式C代码)
- MYSQL语法速查之表更改
- CentOS7 bonding配置
- Gradle Android Studio basic
- 数据库分享一: MySQL的Innodb缓存相关优化
- ubuntu下android源码下载
- Linux系统文件系统详解
- Trident State 详解
- C++多态的实现原理
- js 保存用户7天
- 重新认识Java线程的概念
- C++浅拷贝、深拷贝及引用计数浅析
- css3 transition 动画
- iOS 文件下载
- JavaScrip调试技巧之断点调试
- [HTML5学习]HTML5课程大纲介绍_工具准备课程
- 使用扩展方法(Chapter3 P39-41)