实现目标:将 <span style="font-family: Arial, Helvetica, sans-serif;">"/larbin.conf", "/options.h", "/types.h" 三个特定目录下的文件Copy到新建目录(此目录根据传参url来新建)。</span>
<span style="font-family: Arial, Helvetica, sans-serif;">例如:</span>
<span style="font-family: Arial, Helvetica, sans-serif;">url="www.zju.edu.cn"那么新建的目录为 D:/Crawler/Home/</span><span style="font-family: Arial, Helvetica, sans-serif;">www.zju.edu.cn,三个文件Copy至该目录下</span>
</pre><pre name="code" class="java">实现方法:
</pre><pre name="code" class="java">public void copyLarbinToCatalog(String url) throws IOException{
InputStream in;
OutputStream out;
String dir_module ="D:/Crawler/LarbinModule";
String dir_home_url ="D:/Crawler/Home/"+url;
byte[] inFile;
File outFile;
String[] arr_fileNames = { "/larbin.conf", "/options.h", "/types.h" };
outFile = new File(dir_home_url);
if (!outFile.isDirectory()) {
System.out.println("//路径不存在");
outFile.mkdirs();
// mkdir()
// 只能在已经存在的目录中创建创建文件夹。
// mkdirs()
// 可以在不存在的目录中创建文件夹。诸如:a\\b,既可以创建多级目录。
System.out.println("//路径已经被创建");
} else {
System.out.println("//路径存在");
}
for (int i = 0; i < arr_fileNames.length; i++) {
outFile = new File(dir_home_url + arr_fileNames[i]);
if (!outFile.exists()) {
System.out.println("//文件不存在");
outFile.createNewFile();
System.out.println("//"+dir_home_url + arr_fileNames[i]+"文件已被新创建");
} else {
System.out.println("//文件存在");
}
in = new FileInputStream(dir_module + arr_fileNames[i]);
inFile = new byte[in.available()];
in.read(inFile);
out = new FileOutputStream(dir_home_url + arr_fileNames[i]);
out.write(inFile);
if("/larbin.conf".equals(arr_fileNames[i])){
this.changeStartURLandlimitToDomainByIterator(outFile, url);
}
in.close();
out.close();
}
}
public void changeStartURLandlimitToDomainByIterator(File file,String url) throws IOException{
FileReader in = new FileReader(file);
BufferedReader br = new BufferedReader(in);
String line =null;
while((line=br.readLine()) != null){
if( line.startsWith("startUrl")){
System.out.println("找到startUrl行了 :"+line);
line="startUrl http://"+url;
System.out.println("修改startUrl成功 :"+line);
System.out.println("_____________________________________________________");
}
else if(line.startsWith("limitToDomain")){
System.out.println("找到limitToDomain行了:"+line);
line ="limitToDomain";
String[] domains =url.split("//.");//注意必须转义
for(int i=1 ;i<domains.length;i++){
domains[i]=" ."+domains[i];
line =line+domains[i];
System.out.println(line);
}
line=line +" end";
System.out.println("修改limitToDomain成功:"+line);
System.out.println("_____________________________________________________");
break;
}
}
System.out.println("完成文件行遍历。。。。。。。。。。。。。。");
in.close();
br.close();
}