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{
}

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

java实现文件复制粘贴功能的更多相关文章

  1. 桌面远程连接阿里云服务器(windows)后丧失了双向文件复制粘贴功能的解决方案(第一条博客!)

    近日应公司要求,需在windows服务器上架设一个交易中介软件. 过程之一:将软件压缩文件传到服务器上. 问题:在“运行”对话框通过输入'mstsc' 创建远程连接以后,出现本地桌面与服务器之间无法物 ...

  2. Java io流完成复制粘贴功能

    JAVA 中io字节输入输出流 完成复制粘贴功能: public static void main(String[] args) throws Exception{        // 创建输入流要读 ...

  3. Android EditText 取消复制粘贴功能,取消横向全屏编辑功能(一)

    在做一些安全性的软件时候常常要考虑取消 EditText 上的复制粘贴功能以确保安全性.下面就记录了这个方法: 首先在API-11以下的版本很简单,只需要在Xml布局文件或者用代码把长按属性设置成fa ...

  4. Vbox中unbuntu15.10与win10共享文件 及开启复制粘贴功能

    学习linux,一直使用的是VMware虚拟机,虽然功能很强大,但总感觉页面切换很麻烦.所以转入Vbox的使用,下面介绍下unbuntu15.10与win10共享文件. 一 共享文件夹 步骤1:启动u ...

  5. .NET 实现复制粘贴功能

    老是把自己当作珍珠,就时时有怕被埋没的痛苦.把自己当作泥土吧,让众人把你踩成一条道路. -----<泥土>鲁藜 .NET如何实现复制粘贴功能,具体代码如下: aspx文件: <div ...

  6. 在CMD命令行和PowerShell中实现复制粘贴功能

    在CMD命令行和PowerShell中实现复制粘贴功能         常常使用命令行或者PowerShell的朋友肯定会遇到这样的情况:粘贴文本非常easy,右键--选择粘贴就可以,可是想要复制命令 ...

  7. 仿复制粘贴功能,长按弹出tips的实现

    方案分析: 方案一:监听长按事件弹出PopupWindow[可行,缺点布局是固定的,小语种下会出现菜单截断现象] 方案二:弹出ContextMenu[不可行,因为ContextMenu的菜单是上下排列 ...

  8. iOS开发之--复制粘贴功能

    复制粘贴功能,代码如下: 1.复制功能 UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = ...

  9. js实现复制粘贴功能

    在项目中使用到复制粘贴功能,虽然网上有很多大牛封装了很多的插件,但是还是想不去使用插件,就像自己来实现这个功能. 另一篇是禁止复制粘贴 前端er怎样操作剪切复制以及禁止复制+破解等 初步想法: 1. ...

随机推荐

  1. ActiveMq使用笔记

    java JMS技术 .1.   什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用 ...

  2. (转)Db2 数据库性能优化中,十个共性问题及难点的处理经验

    (转)https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650629396&idx=1&sn=3ec17927b3d ...

  3. 改善android性能工具篇【zipalign】

    什么是Zipalign?      Zipalign是一个android平台上整理APK文件的工具,它首次被引入是在Android 1.6版本的SDK软件开发工具包中.它能够对打包的Android应用 ...

  4. 前端组件化Polymer入门教程(1)——初识&&安装

    前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...

  5. JS中this的那些事儿

    this是JavaScript中最复杂的机制之一.它是一个很特别的关键字,被自动定义在所有函数的作用域中. 一.this到底指向什么? this既不指向函数自身,也不指向函数的词法作用域,具体指向什么 ...

  6. linux上搭建ftp、vsftp, 解决访问ftp超时连接, 解决用户指定访问其根目录,解决ftp主动连接、被动连接的问题

    linux上搭建ftp 重要 解决如何搭建ftp         解决用户指定访问其根目录         解决访问ftp超时连接         解决ftp主动连接.被动连接的问题 1.安装ftp ...

  7. ansible 角色登陆

    用ansible 来管理远程的主机,最大的好处是方便,ansible不用在远程的主机上安装ansible的客户端,ansible只要能通过ssh连接上远程主机就 能对它进行管理.也就是说ansible ...

  8. JDBC Oracle sys 用户连接

    Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection( &quo ...

  9. OpenDigg iOS开源项目月报201704

    由OpenDigg 出品的iOS开源项目月报第一期来啦.我们的iOS开源月报集合了OpenDigg一个月来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Transi ...

  10. jQuery加载部分视图(Partial Views)

    本篇是演示使用jQuery加载部分视图(Partial View).如果你不想使用Razor的语法呈现部分视图,那此篇的方法是最理想的了.它可以Render至指定的tag上. 创建两个部分视图,一个为 ...