Java实现本地 fileCopy

前言:

  Java中流是重要的内容,基础的文件读写与拷贝知识点是很多面试的考点。故通过本文进行简单测试总结。

2.图展示【文本IO/二进制IO】(这是参考自网上的一张总结图,相当经典,方便对比记忆)

3.文本复制的实验Java实现code:

  1 package com.gdufe.io;
  2
  3 import java.io.BufferedInputStream;
  4 import java.io.BufferedOutputStream;
  5 import java.io.DataInputStream;
  6 import java.io.DataOutputStream;
  7 import java.io.FileInputStream;
  8 import java.io.FileOutputStream;
  9 import java.io.IOException;
 10 import java.io.InputStream;
 11 import java.io.OutputStream;
 12
 13 public class TestInputOutputStream {
 14
 15 //    private final static String SOURCE="t.txt";
 16 //    private final static String TARGET="tt.txt";
 17 //    private final static String SOURCE="p.png";
 18 //    private final static String TARGET="pp.png";
 19     private final static String SOURCE="D:\\Tool_Software\\mysql-installer-community-5.6.23.0.msi";
 20     private final static String TARGET="mysql-installer-community-5.6.23.0.msi";
 21     //D:\Tool_Software\Ryuyan.zip
 22
 23
 24     public static void main(String[] args) {
 25 //        TestInputOutputStream.copy1(SOURCE, TARGET);
 26 //        TestInputOutputStream.copy2(SOURCE, TARGET);
 27         TestInputOutputStream.copy3(SOURCE, TARGET);
 28         System.out.println("--End---");
 29     }
 30
 31     public static void copy1(String src,String tar){
 32
 33         InputStream input = null;
 34         OutputStream output = null;
 35         try{
 36             input = new FileInputStream(src);
 37             output = new FileOutputStream(tar);
 38             int r;
 39             while((r=input.read())!=-1){
 40                 output.write((byte)r);
 41             }
 42         }catch(Exception e){
 43             e.printStackTrace();
 44         }finally{
 45             try {
 46                 input.close();
 47                 output.close();
 48             } catch (IOException e) {
 49                 e.printStackTrace();
 50             }
 51         }
 52
 53     }
 54     public static void copy2(String src,String tar){
 55         InputStream input = null;
 56         OutputStream output = null;
 57         try{
 58             input = new FileInputStream(src);
 59             output = new FileOutputStream(tar);
 60             int length=0;
 61             byte []b  = new byte[1024];
 62             while((length=input.read(b))!=-1){
 63                 output.write(b,0,length);
 64             }
 65         }catch(Exception e){
 66             e.printStackTrace();
 67         }finally{
 68             try {
 69                 input.close();
 70                 output.close();
 71             } catch (IOException e) {
 72                 e.printStackTrace();
 73             }
 74         }
 75     }
 76
 77     public static void copy3(String src,String tar){
 78         InputStream input = null;
 79         OutputStream output = null;
 80         try{
 81             input = new DataInputStream(new BufferedInputStream(new FileInputStream(src)));
 82             output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(tar)));
 83             /***经过亲测,buffer缓冲流读取时确实更快一些****/
 84
 85             int length=0;
 86             byte []b  = new byte[1024];    //先将stream读入字节数组
 87             while((length=input.read(b))!=-1){
 88                 output.write(b,0,length);
 89             }
 90         }catch(Exception e){
 91             e.printStackTrace();
 92         }finally{
 93             try {
 94                 input.close();
 95                 output.close();
 96             } catch (IOException e) {
 97                 e.printStackTrace();
 98             }
 99         }
100     }
101 }

(附:参考代码时注意准备好测试文件,不然出现异常“file can‘t be found”!

  文件拷贝到Java工程的直接目录下,刷新project可查看!

时间: 2024-11-03 22:40:43

Java实现本地 fileCopy的相关文章

java事务——本地事务

本地事务 事务类型 事务可以分为本地事务和分布式事务两种类型.这两种事务类型是根据访问并更新的数据资源的多少来进行区分的.本地事务是在单个数据源上进行数据的访问和更新,而分布式事务是跨越多个数据源来进行数据的访问和更新.在这里要说的事务是基于数据库这种数据源的. JDBC事务 在JAVA中,我们使用JDBC来连接数据库,访问和更新数据.那么在JDBC中是如何实现事务的,事务是被谁来管理的?这个答案当然是数据库,JDBC本身并没有处理事务的能力,而是依赖于底层数据库,底层数据库来提供事务的服务.在

Android使用JNI(从java调用本地函数)

当编写一个混合有本地C代码和Java的应用程序时,需要使用Java本地接口(JNI)作为连接桥梁.JNI作为一个软件层和API,允许使用本地代码调用Java对象的方法,同时也允许在Java方法中调用本地函数. 在Java端,开发者所需要做的仅仅是在连接本地函数的方法之前加上native关键字.这样VM就会去寻找这个本地函数. 1.从Java调用本地函数 从Java调用本地函数时,需要在类中定义一个带有native关键字的特有方法,作为连接本地代码的桥梁.通过这个定义,尝试调用本地方法时JVM会找

android的NDK和java进行本地socket通信

关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过<android使用socket使底层和framework通信>这篇文章,美中不足的是作者只贴出一些关键的代码片段而并没有放出源码.我这里还是以一个能实际运行的例子为基础来讲,这样也方便大家学习. 首先看一下效果,如下图.我填写姓名"Potter",选择性别"Mr"然后点击发送,底层socket收到消息后将消息直接返回给我,我将返回的结果(Mr.Potter)直

关于Java获取本地服务器IP的问题

Java获取本地服务器IP,我们最简单的写法: import java.net.InetAddress; public class CatchIp{ public static void main(String[] args) { try { // 获取IP地址 String ip = InetAddress.getLocalHost().getHostAddress(); System.out.println("IP地址:"+ip); } catch (Exception e) {

关于java获取本地ip的几种方法

关于java获取本地ip的几种方法1.获取本地ip的方法 System.out.println(InetAddress.getLocalHost().getHostAddress()); 2.域名解析ip的方法 System.out.println(InetAddress.getByName("www.sina.com.cn")); 3.获取本地出口ip的方法(局域网NAT或本地找交换机出口ip的方法) 建立通讯TCP,telnet,mina通讯等. Socket client = n

java线程本地变量

ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名为ThreadLocalVar更加合适.线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突. 从线程的角度看,每个线程都保持一个对其线程局部变量副本

浅谈Java的本地方法实现JNI

最近做了一个数据结构课上迷宫求解的问题,要求在栈结构上最好能带一个图形界面,将找到的迷宫路径展示出来.原本打算连图形界面一起用C语言写,但是C语言的图形界面如果不调用操作系统的图形库真的很难看,所以选择了Java写图形界面,C语言写算法的这样一个混合编程的方案.这里不对Java图形界面的具体实现和C的算法做解释,只介绍Java和C的“连接部分”. 使用本地方法的前提 虽然现在Java的执行效率的确得到了很大的提升,但是一旦遇到大量计算操作时,还是不如C语言执行快.这种情况下,我们可以考虑将关键的

使用java代码本地测试远程rpc接口

背景:公司开发的系统在本地运行太过麻烦,并且该系统使用dubbo管理服务,使用rpc进行不同应用间的通信.某次开发的时候需要查看调用rpc接口后的返回结果,操作起来太麻烦.于是尝试本地使用java程序直接调用rpc接口进行调试.在此记录代码,抽空把它封装成一个测试dubbo的rpc接口的程序 java代码 package test.kgtone; import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo

Java读取本地文件(输入流)

package cn.buaa; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.InputStream; import java.io.Reader; public class Hello { public static void main(String[] args) throws Exception { //字符输入流 inputReaderStra