实用代码
来源:互联网 发布:淘宝上新速度 编辑:程序博客网 时间:2024/04/30 18:50
1.统计编写的Java程序代码行数;2.文件拷贝
1.统计编写的Java程序代码行数
import java.io.*;import java.util.regex.Pattern;import net.two.Directory.TreeInfo;import java.util.*;class Directory { public static File[] local(File dir,final String regex){ return dir.listFiles(new FilenameFilter(){ private Pattern pattern = Pattern.compile(regex); public boolean accept(File dir,String name){ return pattern.matcher(new File(name).getName()).matches(); } }); } public static File[] local(String dir,final String regex){ return local(new File(dir),regex); } public static class TreeInfo implements Iterable<File>{ public List<File> files = new ArrayList<File>(); public List<File> dirs = new ArrayList<File>(); public Iterator<File> iterator(){ return files.iterator(); } void addAll(TreeInfo other){ files.addAll(other.files); dirs.addAll(other.dirs); } } public static TreeInfo walk(String start,String regex){ return recurseDirs(new File(start),regex); } public static TreeInfo walk(File start,String regex){ return recurseDirs(start,regex); } public static TreeInfo walk(File start){ return recurseDirs(start,".*"); } public static TreeInfo walk(String start){ return recurseDirs(new File(start),".*"); } /** * 遍历Java程序所在目录, * @param startDir 起始路径 * @param regex 正则表达式,所要查找文件的格式 * @return */ static TreeInfo recurseDirs(File startDir,String regex){ TreeInfo result = new TreeInfo(); for(File item:startDir.listFiles()){ if(item.isDirectory()){ result.dirs.add(item); result.addAll(recurseDirs(item,regex)); }else{ if(item.getName().matches(regex)) result.files.add(item); } } return result; }}public class CodeLinesData { public static int num = 0; public void getCodeLines(String file) throws IOException{ getCodeLines(new File(file)); } public void getCodeLines(File file) throws IOException{ BufferedReader in = new BufferedReader(new FileReader(file)); while(in.readLine()!=null){ num++; } in.close(); } public static void main(String[] args) throws IOException{ CodeLinesData cld = new CodeLinesData(); Directory d = new Directory(); List<File> files; files = Directory.walk("E:\\Data\\Myeclipse", ".*\\.java").files; Iterator<File> iterator = files.iterator(); while(iterator.hasNext()){ cld.getCodeLines(iterator.next()); } System.out.println("总共写过:"+num+" 行代码"); }}
2.文件拷贝
import java.io.*;import java.nio.ByteBuffer;import java.nio.channels.*;public class CopyFile { /* * copy1()用时较copy2()长 */ public static void copy1(String fromFile,String toFile) throws IOException{ int bsize = 1024; FileChannel fcin = new FileInputStream(fromFile).getChannel(), fcout = new FileOutputStream(toFile).getChannel(); ByteBuffer bf = ByteBuffer.allocate(bsize); /*fcin.read(bf); bf.flip(); while(bf.hasRemaining()){ //此处当文件大于BSIZE时,不能正确复制. fcout.write(bf); }*/ while(fcin.read(bf)!=-1){//fcin.read(bf):返回(return)读取到字节的大小,读完时返回-1. bf.flip();//准备写 fcout.write(bf); bf.clear();//准备读 } } /* * copy2()用时最短 */ public static void copy2(String fromFile,String toFile) throws IOException{ //(2)利用通道 FileChannel fcin = new FileInputStream(fromFile).getChannel(), fcout = new FileOutputStream(toFile).getChannel(); fcin.transferTo(0, fcin.size(), fcout); fcin.close(); fcout.close(); } /* * copy3()复制文件会出错 */ public static void copy3(String fromFile,String toFile) throws IOException{ BufferedReader in = new BufferedReader(new FileReader(fromFile)); BufferedWriter out1 = new BufferedWriter(new FileWriter(toFile)); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(toFile))); StringBuilder sb = new StringBuilder(); try{ String s; while((s=in.readLine())!=null){ sb.append(s+"\n"); out.println(s); } }finally{ in.close(); out.close(); } out1.write(sb.toString()); out1.close(); } public static void main(String[] args) throws IOException{ String fromFile = "D:\\研究\\AD量化误差抑制\\Bymyself\\test.doc"; String toFile = "F:\\data\\test\\copyof3_A Method.doc"; long start = System.currentTimeMillis(); //CopyFile.copy1(fromFile, toFile); CopyFile.copy2(fromFile, toFile);//用时最短 //CopyFile.copy3(fromFile, toFile); long time = System.currentTimeMillis()-start; System.out.println("拷贝总共用时 "+time+" 秒"); }}
0 0
- 实用代码
- 实用代码
- 实用代码
- 实用代码
- 实用代码
- 【实用代码】
- 实用代码
- ASP实用代码
- ASP实用代码 (转载)
- 珍藏的实用代码
- javascript实用代码大全
- javascript实用代码大全
- javascript实用代码大全
- VBA实用代码拾零
- 实用JAVASCRIPT代码
- javascript实用代码大全
- 实用JS代码
- javascript实用代码大全
- PHP之进制转换
- Android之PreferenceFragment的使用:
- CentOS6.5下Tomcat搭建Solr5.4.0集群
- pb
- Java 日期处理 Date 、Calendar 和TimeZone类
- 实用代码
- UVA 11354Bond(MST+LCA)
- react native Image 控件显示图片方式总结
- 8 线程、死锁
- CentOs 关机注意事项
- Angular $q 完全指南
- JavaEE命名服务与JNDI
- 在linux环境上如何部署SolrCloud
- QT backgound-image 与 bord-image