实用代码
2016-01-27 23:29
302 查看
1.统计编写的Java程序代码行数;2.文件拷贝
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+" 秒"); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- [Android]在代码里运行另一个程序的方法
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序