本帖最后由 小马过河 于 2013-11-18 23:29 编辑
{:soso_e154:} 心得,导包还是建议不要求简单加星号,多自己给出更好,作为一个在路上的童鞋,说句实话,很多朋友在做实现的时候都能有个大概思路,但是没有代码。一个是缺乏足够的练习,借老李的口号,狂敲,狂敲!
另外,很多时候我们缺乏对方法灵活的运用,而灵活的应用是建立在熟悉的基础之上,建议大家完成代码后将里面用到的方法备注总结出来,{:soso_e129:}不然过上些日子,不说陌生,忘了都是可能的。直接导致很多时候面对需求束手无策。
API灰常灰常重要,不指望大家能超越那个传说背API的猛人,能记得一些还是记一些哇
以下这个简单代码就是我的切肤之痛,人家5分钟,我查都查了2个小时。
下面是我写出来的,注释了过程总结~,一样的菜鸟可以以码会友哦
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
//需求,对一个文件夹内部分文件进行改名,再复制到新的目录中。
//分析:1,先得有这么一个文件夹作为文件源; 2,封装文件源; 3,建立一个文件源数组,并使用文件过滤器。 4,建立目的地目录。且对此目录进行判定,是否存在,不存在即创建
// 5,对文件源,文件数组进行遍历,获取每一个文件的名字。 6,将获取到的名字赋给新的名字。7,用一个新的文件接收目的地的对象和名字。
// 8,再进行io流的写入工作,用BufferedReader和BufferedWiter的特有方法。
public class ReNameCopy {
public static void main(String[] args) throws IOException {
//封装文件源
File file = new File("d:\\day1105");
//将文件源定义成一个数组
File[] arrayfile =file.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name) {
//具体描述,这句在建立数组时就已经进行了过滤,过滤的是文件类型和命名,将筛选的结果建立成数组。
return new File(dir,name).isFile()&&name.endsWith(".java");
}
});
//建立目的地
File file2 = new File("f:\\day");
//对文件进行判定,是否存在此目录
if (!file2.exists()) {
file2.mkdir();//创建目录。
}
//对文件源进行变量
for (File fi : arrayfile) {
//获取文件名字
String name=fi.getName();
//对名字进行修改,获得新的名字。
String newName=name.replace(".java", ".jdk");
//创建一个新的文件,接收新的文件地址和名字。记住,这里很多人不明白,会认为既然已经有的新的文件目的地,再建立的会
//不知道放在那里。实际上是没有深刻理解变量名,这里传递file2是地址值。
//这里的file(file2,newName)是File类中四种构造方法的一种。File(File parent, String child)
File newFile = new File(file2,newName);
//现在进行IO流的输入输出。
BufferedReader br = new BufferedReader(new FileReader(fi));
BufferedWriter bw = new BufferedWriter(new FileWriter(newFile));
//进行while循环写入,采用高效字符流里的特殊方法。
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
}
}end。。。闷的抓狂抓头发,抓到虫子很开心,加油童鞋们
|