java編程思想中講到了IO流的思想,以前對於java基礎總是不夠深入,淺嘗輒止,如今碰到語句插樁的時候就感到書到用時方恨少啊!
文件的復制涉及到源文件和新文件(無需手動創建),給出源文件的路徑和文件名,然后給出新文件放置的位置,並新任命一個名字。(java文件盡量目錄不要放一塊,以保證名字的相同,因為類名和java文件名要保持一樣)。
方法一:(需要導入IO包)
在主方法寫入:
File oldf=new File("F:\\muce2\\Triangle\\src\\Triangle.java"); //源文件路徑
File newf=new File("F:\\muce2\\Triangle\\Triangle.java"); //新文件路徑(注意要用 \\來代替\,轉義字符)
copyfile(oldf,newf); //調用以下方法
public static void copyfile(File oldfile,File newfile) throws IOException{
//復制文件
FileInputStream ins = new FileInputStream(oldfile);
FileOutputStream out = new FileOutputStream(newfile);
//自定義緩沖對象
byte[] b = new byte[1024];
int n=0;
while((n=ins.read(b))!=-1){
out.write(b, 0, b.length);
}
ins.close();
out.close();
System.out.println("copy success");
}
此方法直接用FileInputStream和FileOutputStream進行文件的讀取和寫入。需要創建一個自定義緩沖對象,以及最后關閉兩個方法。(並不建議采用)
方法二:(導入IO包)
主方法寫入:
int ln=0;
//復制文件
int ln2=copyfile2("F:\\muce2\\Triangle\\src\\Triangle.java","C:\\Users\\Administrator\\Desktop\\Tirangle.java",ln); //前面的是源文件,后面的是新文件路徑,最后一個是行號
//line number
System.out.println(ln2);
public static void copyfile2(String from,String to) throws IOException{ BufferedReader in=new BufferedReader(new FileReader(from)); BufferedWriter out=new BufferedWriter(new FileWriter(to)); String line=null; int linenumber=0; while((line=in.readLine())!=null){ out.write(line+"\n"); linenumber++; } in.close(); out.close(); System.out.println("line number "+linenumber); }
此方法是對源文件進行逐行的寫入,到readline()==null時截至迭代。
注意的是,代碼中的空行不是什么都沒有,而是換行,寫入時有 \n ,並不是null。兩者的區別就像,\n 是桌子上面什么都沒有, null是根本沒有這桌子。一個是空的,一個是不存在。
逐行寫入復制的優點有很多,可以記錄行數,可以在讀取該行內容的時候進行判斷該行是在方法體內還是體外之類。例如在 while(){}迭代里寫入:
if(line.contains("public") || line.startsWith("}") ||
line.contains(null) || line.startsWith("//") ||
line.startsWith("/*") || line.startsWith("*") ||
line.startsWith("*/")){
continue;
}else{
}
這種類似的代碼結合數組,就可以記錄是否可以進行語句插樁。