当前位置:网站首页>File copy method
File copy method
2022-07-03 22:27:00 【User 2700206】
package top.my.test.case1; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; public class FileCopyTest { public static void main(String[] args) { // File size is 4.5G System.out.println(System.currentTimeMillis()); // 1595581151315 -- 1595581253196 = 101881ms = 101s // copyFile(new File("D:\\xl\\big.mkv"), new File("D:\\big.mkv")); // 1595582378585 -- 1595582548529 = 169944ms = 169s // fileChannelCopy(new File("D:\\xl\\big.mkv"), new File("D:\\big2.mkv")); // 1595582683903 -- 1595582805496 = 121593ms = 121s // fileCopy(new File("D:\\xl\\big.mkv"), new File("D:\\big2.mkv")); // 1595583767345 -- 1595583897985 = 130640ms = 130s // filesCopy(new File("D:\\xl\\big.mkv"), new File("D:\\big2.mkv")); //1595584222455 -- 1595584325169 = 102714ms = 102s copyBigFile(new File("D:\\xl\\big.mkv"), new File("D:\\big.mkv")); System.out.println(System.currentTimeMillis()); } // Single file copy public static boolean copyFile(File fromFile, File toFile) { try (FileInputStream in = new FileInputStream(fromFile); FileOutputStream os = new FileOutputStream(toFile);) { byte[] b = new byte[1024]; int n = 0; while ((n = in.read(b)) != -1) { os.write(b, 0, n); } in.close(); os.close(); System.out.println(" End of file copy "); return true; } catch (Exception e) { e.printStackTrace(); return false; } } public static boolean filesCopy(File s, File t) { Path sourcePath = Paths.get(s.getAbsolutePath()); Path destinationPath = Paths.get(t.getAbsolutePath()); try { Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); return true; } catch (IOException e) { // something else went wrong e.printStackTrace(); } return false; } public static boolean fileCopy(File s, File t) { FileInputStream fi = null; FileOutputStream fo = null; FileChannel in = null; FileChannel out = null; try { fi = new FileInputStream(s); fo = new FileOutputStream(t); in = fi.getChannel();// Get the corresponding file channel out = fo.getChannel();// Get the corresponding file channel long left_size = in.size(); System.out.println(" Source file size :" + left_size / 1024 / 1024); long position = 0; while (left_size > 0) { long write_size = in.transferTo(position, left_size, out); position += write_size; left_size -= write_size; } // in.transferTo(0, in.size(), out);// Connecting two channels , And from in Channel read , And then write out passageway System.out.println("FileChannel End of file copy "); System.out.println(" Target file size :" + out.size() / 1024 / 1024); return true; } catch (IOException e) { System.out.print(" File copy exception :{}" + e.getMessage()); ; } finally { try { fi.close(); in.close(); fo.close(); out.close(); } catch (IOException e) { System.out.print(" File copy exception :{}" + e.getMessage()); } } return false; } public static boolean fileChannelCopy(File s, File t) { FileChannel in = null; FileChannel out = null; RandomAccessFile fi = null; RandomAccessFile fo = null; try { if (!t.isFile()) { if (!t.createNewFile()) { return false; } } fi = new RandomAccessFile(s, "r"); fo = new RandomAccessFile(t, "rw"); in = fi.getChannel();// Get the corresponding file channel out = fo.getChannel();// Get the corresponding file channel long left_size = in.size(); long position = 0; while (left_size > 0) { long write_size = in.transferTo(position, left_size, out); position += write_size; left_size -= write_size; } // in.transferTo(0, in.size(), out);// Connecting two channels , And from in Channel read , And then write out passageway System.out.println("FileChannel End of file copy "); return true; } catch (IOException e) { System.out.print(" File copy exception :{}" + e.getMessage()); ; } finally { try { fi.close(); in.close(); fo.close(); out.close(); } catch (IOException e) { System.out.print(" File copy exception :{}" + e.getMessage()); } } return false; } public static boolean copyBigFile(File s, File t) { FileInputStream fi = null; FileOutputStream fo = null; FileChannel in = null; FileChannel out = null; ByteBuffer buffer = ByteBuffer.allocate(10 * 1024); try { fi = new FileInputStream(s); fo = new FileOutputStream(t); in = fi.getChannel();// Get the corresponding file channel out = fo.getChannel();// Get the corresponding file channel while (true) { int read = in.read(buffer); if (read == -1) break; buffer.flip(); out.write(buffer); buffer.clear(); } System.out.println("ByteBuffer End of file copy "); return true; } catch (IOException e) { System.err.print(" File copy exception :{}" + e.getMessage()); } finally { try { fi.close(); in.close(); fo.close(); out.close(); } catch (IOException e) { System.err.print(" File copy exception :{}" + e.getMessage()); } } return false; } }
边栏推荐
- What are the common computer problems and solutions
- Sed、Awk
- The latest analysis of R1 quick opening pressure vessel operation in 2022 and the examination question bank of R1 quick opening pressure vessel operation
- Mindmanager2022 serial number key decompression installer tutorial
- Opengauss database log management guide
- Blue Bridge Cup -- Mason prime
- How to solve the problem of computer networking but showing no Internet connection
- The 14th five year plan for the construction of Chinese Enterprise Universities and the feasibility study report on investment Ⓓ 2022 ~ 2028
- On my first day at work, this API timeout optimization put me down!
- Pan Yueming helps Germany's Rochester Zodiac custom wristwatch
猜你喜欢
The latest analysis of crane driver (limited to bridge crane) in 2022 and the test questions and analysis of crane driver (limited to bridge crane)
540. Single element in ordered array
Unique in China! Alibaba cloud container service enters the Forrester leader quadrant
The 2022 global software R & D technology conference was released, and world-class masters such as Turing prize winners attended
Blue Bridge Cup -- Mason prime
[template summary] - binary search tree BST - Basics
Summary of basic knowledge of exception handling
Harbor integrated LDAP authentication
Morning flowers and evening flowers
1 Introduction to spark Foundation
随机推荐
Dynamic research and future planning analysis report of China's urban water supply industry Ⓝ 2022 ~ 2028
webAssembly
Oil monkey plug-in
Analysis report on the development prospect and investment strategy of global and Chinese modular automation systems Ⓟ 2022 ~ 2027
DR882-Qualcomm-Atheros-QCA9882-2T2R-MIMO-802.11ac-Mini-PCIe-Wi-Fi-Module-5G-high-power
[dynamic programming] Jisuan Ke: Jumping stake (variant of the longest increasing subsequence)
Leetcode week 4: maximum sum of arrays (shape pressing DP bit operation)
C deep anatomy - the concept of keywords and variables # dry inventory #
Leetcode: a single element in an ordered array
Tkinter Huarong Road 4x4 tutorial III
How the computer flushes the local DNS cache
Farmersworld farmers world, no faith, how to talk about success?
STM32 multi serial port implementation of printf -- Based on cubemx
Es6~es12 knowledge sorting and summary
Morning flowers and evening flowers
Blue Bridge Cup Guoxin Changtian single chip microcomputer -- led lamp module (V)
WFC900M-Network_ Card/Qualcomm-Atheros-AR9582-2T-2R-MIMO-802.11-N-900M-high-power-Mini-PCIe-Wi-Fi-Mod
Ansible common usage scenarios
Pat grade A - 1164 good in C (20 points)
Uboot migration