“Java有幾種檔案拷貝方式,哪一種效率最高?”
這個問題是京東一面的時候,針對4年經驗的同學的一個面試題,
大家好,我是Mic,一個作業了14年的Java程式員,
關于這個問題的回答,我把文字版本整理到了15W字的面試檔案里面,
大家可以在我的主頁加V領取,
下面看看高手的回答,
高手:
第一種,使用java.io包下的庫,使用FileInputStream讀取,再使用FileOutputStream寫出,
第二種,利用java.nio包下的庫,使用transferTo或transfFrom方法實作,
第三種,Java 標準類別庫本身已經提供了 Files.copy 的實作,
對于 Copy 的效率,這個其實與作業系統和配置等情況相關,在傳統的檔案IO操作里面,我們都是呼叫作業系統提供的底層標準IO系統呼叫函式 read()、write() ,由于內核指令的呼叫會使得當前用戶執行緒切換到內核態,然后內核執行緒負責把相應的檔案資料讀取到內核的IO緩沖區,再把資料從內核IO緩沖區拷貝到行程的私有地址空間中去,這樣便完成了一次IO操作,
而NIO里面提供的NIO transferTo和transfFrom方法,也就是常說的零拷貝實作,
它能夠利用現代作業系統底層機制,避免不必要拷貝和背景關系切換,因此在性能上表現比較好,
總結
關于檔案IO方面的問題和內容還挺多的這塊屬于Java里面的基礎知識,但是隨著這個技術知識的延展,會涉及到NIO、AIO、零拷貝、IO多路復用機制等等,
對于求職者來說,這塊內容的重要性也不言而喻,
大家記得點贊收藏加關注!
著作權宣告:本博客所有文章除特別宣告外,均采用 CC BY-NC-SA 4.0 許可協議,轉載請注明來自
Mic帶你學架構!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力,歡迎關注「跟著Mic學架構」公眾號公眾號獲取更多技術干貨!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501781.html
標籤:其他
上一篇:Laravel sali WSL2 DockerDesktop 安裝代理設定指南
下一篇:迭代器與生成器
