Java常用面试题16 用IO和NIO两种方式实现文件拷贝
来源:互联网 发布:如何理解js原型链 编辑:程序博客网 时间:2024/05/10 18:17
问:用IO和NIO两种方式实现文件拷贝
答:
import java.io.File;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class MyUtil {
//// 工具类中的方法都是静态方式访问的因此将构造器私有不允许创建对象(绝对好习惯)
private MyUtil() {}
public static void fileCopy(String source, String target)
throws IOException {
try (InputStream in = new FileInputStream(source)) {
try (OutputStream out = new FileOutputStream(target)) {
byte[] buffer = new byte[4096];
int bytesToRead;
while ((bytesToRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesToRead);
}
}
}
}
public static void fileCopyNIO(String source, String target)
throws IOException {
try (FileInputStream in = new FileInputStream(source)) {
try (FileOutputStream out = new FileOutputStream(target)) {
FileChannel inChannel = in.getChannel();
FileChannel outChannel = out.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(4096);
while (inChannel.read(buffer) != -1) {
buffer.flip();
outChannel.write(buffer);
buffer.clear();
}
}
}
}
public static void main(String[] args) {
//获取你当前的路径
File f = new File(MyUtil.class.getClass().getResource("/").getPath());System.out.println(f);
try {
MyUtil.fileCopyNIO("F:\\WorkSpace feature\\rule_center\\target\\classes\\aa\\aa.txt", "F:\\WorkSpace feature\\rule_center\\target\\classes\\aa\\bb.txt");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:F:\WorkSpace%20feature\rule_center\target\classes
0 0
- Java常用面试题16 用IO和NIO两种方式实现文件拷贝
- Java IO与NIO实现文件拷贝
- NIO方式实现文件的快速拷贝
- Java IO和Java NIO在文件拷贝上的性能差异分析
- Java IO和Java NIO在文件拷贝上的性能差异分析
- Java IO和Java NIO在文件拷贝上的性能差异分析
- JAVA文件拷贝(NIO实现)
- [java]NIO服务器(ServerSocketChannel)开发的两种实现方式
- BIO与NIO的方式实现文件拷贝
- JAVA IO和NIO复制文件
- JAVA-IO 文件拷贝功能的实现
- java文件io、nio
- java IO流面试题和选择题
- IO实现文件拷贝
- IO // NIO 实现方式比较
- java IO实现文件拷贝以及文件夹拷贝
- java io和nio
- java IO和NIO
- ImportError: No module named 'urllib2'
- uva 1664 并查集+贪心
- 【C#】图解如何添加引用using MySql.Data.MySqlClient;
- Java8新特性 - 流式数据处理
- 技巧收集
- Java常用面试题16 用IO和NIO两种方式实现文件拷贝
- 转向移动端UI/UX设计有哪些必知的设计要点
- 超平面简介
- volatile的适用场景(面试问题:volatile有什么作用)
- Hadoop应用实例:提取网页元素
- 视频监控杂谈
- 三分钟了解Activiti工作流
- REST和RESTFUL的相关概念理解
- insert into 加锁机制