1. 程式人生 > >Java常用面試題16 用IO和NIO兩種方式實現檔案拷貝

Java常用面試題16 用IO和NIO兩種方式實現檔案拷貝

問:IONIO兩種方式實現檔案拷貝

答:

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


相關推薦

Java常用試題16 IONIO方式實現檔案拷貝

問:用IO和NIO兩種方式實現檔案拷貝 答: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;

JavaPHP方式實現上傳圖片到新浪微博的圖床

這幾天遇到一個需求,需要將圖片上傳到新浪微博的圖傳,研究了一下, 特此記錄1.模擬登陸,獲取cookie登入地址為:https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=140313

nrf52832I2CSPI方式驅動LIS2DS12

本來在這裡寫了些牢騷話,但是想想這是記錄技術文件,還是廢話少說為好 直奔主題 先介紹下LIS2DS12,ST公司出的gsensor,內部自帶mcu ,可以輸出步數、敲擊、翻腕等行為結果,還提供了一個256級的FIFO(可以儲存256組三軸資料),FIFO具有

9.10 路由控制之反向解析--【別名】htmlviews方式實現

com 反向 技術分享 http mage login gin bsp 分享圖片 1. 在html裏反向解析 給路徑起別名,修改路徑時,不用每個地方都修改。 {% url ‘Log‘ %} : 就會去找別名為Log的URL,找到 "login/"後把"logi

spring之AOP操作(基於aspectJ實現)--配置檔案註解方式實現

AOP概念   1 aop:面向切面(方面)程式設計,擴充套件功能不修改原始碼實現     2  AOP採取橫向抽取機制,取代了傳統縱向繼承體系重複性程式碼     3 aop底層使用動態代理實現     (1)第一種情況,有介面情況,使用動態代理建立介面實現類代理物

合併個陣列並去重(ES5ES6方式實現

 ES6實現方式 let arr1 = [1, 1, 2, 3, 6, 9, 5, 5, 4] let arr2 = [1, 2, 5, 4, 9, 7, 7, 8, 8] f

Java常用試題15 synchronized方法的妙 鎖池等待池的區別

問: 當一個執行緒進入一個物件的synchronized方法A之後,其它執行緒是否可進入此物件的synchronized方法B?  答: 不能。其它執行緒只能訪問該物件的非同步方法,同步方法則不能進入。因為非靜態方法上的synchronized修飾符要求執行方法時要獲得

Java常用試題14 如何暫停執行緒SleepWait 你能分清楚嗎?

問: Thread類的sleep()方法和Object類的wait()方法都可以讓執行緒暫停執行,它們有什麼區別?  答: sleep()方法(休眠)是執行緒類(Thread)的靜態方法,呼叫此方法會讓當前執行緒暫停執行指定的時間,將執行機會(CPU)讓給其他執行緒,但是

JAVA常用試題總結

JAVA常用面試題總結   一、SpringMVC執行原理 SpringMVC執行原理 1. 客戶端請求提交到DispatcherServlet 2. 由DispatcherServlet控制器查詢一個或多個HandlerMapping,找到處理請求的Cont

客觀試題--16.值傳遞引用傳遞的區別?JavaScript的資料型別都有什麼?

關於值傳遞和引用傳遞其實需要分情況看待.1.基本型別和引用型別在記憶體中的儲存Java中資料型別分為兩大類,基本型別和物件型別。相應的,變數也有兩種型別:基本型別和引用型別。基本型別的變數儲存原始值,即它代表的值就是數值本身;而引用型別的變數儲存引用值,"引用值"指向記憶體空

java實現二分查詢演算法,方式實現,非遞迴遞迴

java實現二分查詢演算法 1、概念 2、前提 3、思想 4、過程 4、複雜度 5、實現方式 1. 非遞迴方式 2. 遞迴方式

17-Java併發程式設計:執行緒間協作的方式:wait、notify、notifyAllCondition

Java併發程式設計:執行緒間協作的兩種方式:wait、notify、notifyAll和Condition   在前面我們將了很多關於同步的問題,然而在現實中,需要執行緒之間的協作。比如說最經典的生產者-消費者模型:當佇列滿時,生產者需要等待佇列有空間才能繼續往裡面放

Java併發程式設計:執行緒間協作的方式:wait、notify、notifyAllCondition

在前面我們將了很多關於同步的問題,然而在現實中,需要執行緒之間的協作。比如說最經典的生產者-消費者模型:當佇列滿時,生產者需要等待佇列有空間才能繼續往裡面放入商品,而在等待的期間內,生產者必須釋放對臨界資源(即佇列)的佔用權。因為生產者如果不釋放對臨界資源的佔用權,那麼消費者

遞迴迭代方式實現歸併排序(Java版)

遞迴版 package MergeSort; import Utils.SortUtils; /** * 歸併排序遞迴版 * @author liguodong */ pub

陣列連結串列方式實現佇列

手寫陣列實現佇列 1 int queue[20]; 2 int front,rear; 3 4 void clear() 5 { 6 front = rear = -1; 7 } 8 9 int size() 10 { 11 return (rear-front)

java實現下載excle(jxlpoi 方式

@RequestMapping(value="/download_index") public String downloadExcel(HttpServletRequest request,HttpServletResponse response,String nam

ubuntu 16.04安裝redis的方式(apt編譯方式解除安裝

  保證網路暢通,選定好下載工作路徑,執行以下命令下載redis-3.2.6: sudo wget http://download.redis.io/releases/redis-3.2.6.ta

跨域問題相關知識詳解(原生jsjquery方法實現jsonp跨域)

syn con 加載 developer 兩種方法 ray exe 編寫 分組 1、同源策略 同源策略(Same origin policy),它是由Netscape提出的一個著名的安全策略。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽

Android以JSONOjectGSON方式解析json

length pre ray oid 字符 CA clas img name json文件如下: 將獲取到的json數據轉化為String形式 OkHttpClient client = new OkHttpClient(); R

JDBC中Oracle的SIDServiceName方式的連接字符串格式

bottom none color bubuko div nbsp rac 字符串 padding SID格式: jdbc:oracle:thin:@<host>:<port>:<SID> 如: jdbc:oracle:thin:@19