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. windows2016 安装mysql5.7

    下载msi安装包,一路下一步. 安装好后,做下简单配置. 默认的my.ini和datadir在C:\ProgramData\MySQL Server 5.7下 更改默认my.ini的方法为修改注册表 ...

  2. C# 多线程之List的线程安全问题

    网上关于List的线程安全问题将的很少,所以自己实验了一把,发现确实是线程不安全的.所以当你在进行多线程编程中使用了共享的List集合,必须对其进行线程安全处理. List的Add方法是线程不安全的, ...

  3. js中编写velocity逻辑

    <script type="text/javascript"> $(function(){ #foreach( $var in $entity.showConfigs ...

  4. 工具-CocoaPods安装和使用及卸载

    CocoaPods是iOS最常用的第三方类库管理工具,绝大部分有名的开源类库都支持CocoaPods. 我们在使用gem更新的时候,经常会为速度抓狂,其实gem默认的源是https://rubygem ...

  5. 全网最全的Windows下Python2 / Python3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)

    不多说,直接上干货! 建议,你用Anaconda2或Anaconda3. 见 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库( ...

  6. Silverlight中使用MVVM(4)—演练

    本来打算用MVVM实现CRUD操作的,这方面例子网上资源还挺多的,毕竟CRUD算是基本功了,因为最近已经开始学习Cailburn框架了,感觉时间 挺紧的,这篇就实现其中的更新操作吧.         ...

  7. scala-02-数组的操作

    scala中的数组和 java中的数组一样, 定义了长度后不可改变 1, 产生一个数组: 有3种创建数组的方式, 分别直接new, 直接赋值, 或者使用 Array中的rang来产生 /** * 获取 ...

  8. Entity Framework 6.x 学习之Database First

    一.单表操作 1. 建表 CREATE TABLE [Chapter1].[Customer] ( , ), ) COLLATE Chinese_PRC_CI_AS NOT NULL, ) COLLA ...

  9. Docker实战-为镜像添加SSH服务

    1.基于docker commit命令创建 Docker提供了docker commit命令,支持用户提交自己对定制容器的修改,并生成新的镜像. 命令格式为:docker commit CONTAIN ...

  10. QYH练字

    汉字书写笔划,提取自百度汉语等网站... 以下凑字数: [发文说明]博客园是面向开发者的知识分享社区,不允许发布任何推广.广告.政治方面的内容.博客园首页(即网站首页)只能发布原创的.高质量的.能让读 ...