java实现粘贴_java实现文件复制粘贴功能

本文介绍了使用Java实现文件复制粘贴的两种方法。第一种通过FileInputStream和FileOutputStream直接读写,第二种利用BufferedReader和BufferedWriter逐行复制,并能记录行数。文章还提到了在复制过程中如何进行条件判断,适用于代码插桩等场景。
摘要由CSDN通过智能技术生成

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{

}

这种类似的代码结合数组,就可以记录是否可以进行语句插桩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值