求助!在文件拷贝中遇到的一个问题,请高手赐教~~ 就是我想把一个java文件,考到另一个指定目录下,要求不能将该java文件中的空白行还有注释拷过去,望大虾赐教,谢谢了~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简单的写了个,就是if判断再处理。我觉得读文件是至少的,因为你对内容有要求。import java.io.*;public class FileCopy { private static File source, target; private static void copyWithoutCommentsAndBlank(File source, File target){ try{ BufferedReader br = new BufferedReader(new FileReader(source)); BufferedWriter bw = new BufferedWriter(new FileWriter(target)); String text; while((text = br.readLine())!= null){ if(text.matches("\\s*\n?\t*")) continue; if(text.matches("\\s*\t*.*//.*\n?")){ //处理行注释"//"与代码混合的情况 text = text.split("//")[0]; if("\\s*\t*".equals(text)|"".equals(text)) continue; } if(text.startsWith("/*")|text.startsWith("*")|text.endsWith("*/")){ //处理段落注释"/*...*/",我默认段落注释是不会夹杂在代码中的 continue; } System.out.println(text); bw.write(text); bw.newLine(); } bw.close(); }catch(IOException ioException){ System.err.println("Error!"); } } public static void main(String args[]){ source = new File("C:/Java-Justin/USA/src/A.java"); target = new File("C:/B.java"); copyWithoutCommentsAndBlank(source, target); System.out.println("\nFINISH!"); }}原文件:public class A{ /***/public static int doFactorial(int n,int sum) { if (n < 0){ return -1; } if (n == 0) { // 0!=1 return 1; } else if (n == 1) { System.out.println(sum+1); // 退出递归的条件 return 1; } else {// 满足进行递归的条件 sum=sum+n*doFactorial(n-1,0); return n *doFactorial(n - 1,sum); } } public static void main(String [] args){ System.out.println(doFactorial(4,0)); } }目标文件:public class A{ public static int doFactorial(int n,int sum) { if (n < 0){ return -1; } if (n == 0) { return 1; } else if (n == 1) { System.out.println(sum+1); return 1; } else { sum=sum+n*doFactorial(n-1,0); return n *doFactorial(n - 1,sum); } } public static void main(String [] args){ System.out.println(doFactorial(4,0)); } } java如何调用自定义文件 初学structs,推荐本书 Tomcat提示信息不停止!(急) 怎么new出一个纯日期,或者纯时间的Date类啊??? java 中,Bigdecimal 转 int 的 问题 大侠救命啊 入门学者?请各位高手帮忙!! 新窗口打开问题求助!!急~~ 在swt中的Text控件上能添加右键菜单吗 为什么会这样?byte数组转化成string再转回来就不一样了 Iterator in Java 超级简单--------Unix 上java的路径问题?
private static File source, target;
private static void copyWithoutCommentsAndBlank(File source, File target){
try{
BufferedReader br = new BufferedReader(new FileReader(source));
BufferedWriter bw = new BufferedWriter(new FileWriter(target));
String text;
while((text = br.readLine())!= null){
if(text.matches("\\s*\n?\t*"))
continue;
if(text.matches("\\s*\t*.*//.*\n?")){ //处理行注释"//"与代码混合的情况
text = text.split("//")[0];
if("\\s*\t*".equals(text)|"".equals(text))
continue;
}
if(text.startsWith("/*")|text.startsWith("*")|text.endsWith("*/")){ //处理段落注释"/*...*/",我默认段落注释是不会夹杂在代码中的
continue;
}
System.out.println(text);
bw.write(text);
bw.newLine();
}
bw.close();
}catch(IOException ioException){
System.err.println("Error!");
}
}
public static void main(String args[]){
source = new File("C:/Java-Justin/USA/src/A.java");
target = new File("C:/B.java");
copyWithoutCommentsAndBlank(source, target);
System.out.println("\nFINISH!");
}
}
原文件:public class A{
/*
*
*/
public static int doFactorial(int n,int sum) {
if (n < 0){
return -1;
}
if (n == 0) {
// 0!=1
return 1;
} else if (n == 1) {
System.out.println(sum+1);
// 退出递归的条件
return 1;
}
else {// 满足进行递归的条件
sum=sum+n*doFactorial(n-1,0);
return n *doFactorial(n - 1,sum);
}
}
public static void main(String [] args){
System.out.println(doFactorial(4,0));
}
}目标文件:public class A{
public static int doFactorial(int n,int sum) {
if (n < 0){
return -1;
}
if (n == 0) {
return 1;
} else if (n == 1) {
System.out.println(sum+1);
return 1;
}
else {
sum=sum+n*doFactorial(n-1,0);
return n *doFactorial(n - 1,sum);
}
}
public static void main(String [] args){
System.out.println(doFactorial(4,0));
}
}