当前位置:网站首页>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; } }
边栏推荐
- [sg function]split game (2020 Jiangxi university student programming competition)
- Common problems in multi-threaded learning (I) ArrayList under high concurrency and weird hasmap under concurrency
- Oil monkey plug-in
- Shell script three swordsman awk
- Cesium terrain clipping draw polygon clipping
- How about agricultural futures?
- Pooling idea: string constant pool, thread pool, database connection pool
- [automation operation and maintenance novice village] flask-2 certification
- LeetCode 1647. Minimum deletion times of unique character frequency
- Data consistency between redis and database
猜你喜欢
The latest analysis of R1 quick opening pressure vessel operation in 2022 and the examination question bank of R1 quick opening pressure vessel operation
Summary of fluent systemchrome
Exclusive interview with the person in charge of openkruise: to what extent has cloud native application automation developed now?
Exclusive interview with the person in charge of openkruise: to what extent has cloud native application automation developed now?
How to solve the problem of requiring a password when accessing your network neighborhood on your computer
Mysql database - Advanced SQL statement (I)
Yyds dry goods inventory Spring Festival "make" your own fireworks
What are the common computer problems and solutions
[actual combat record] record the whole process of the server being attacked (redis vulnerability)
webAssembly
随机推荐
Leetcode problem solving - 235 Nearest common ancestor of binary search tree
pivot ROP Emporium
Kali2021.4a build PWN environment
Awk getting started to proficient series - awk quick start
6.2 normalization 6.2.5 third normal form (3NF)
SDNU_ ACM_ ICPC_ 2022_ Winter_ Practice_ 4th [individual]
[sg function] lightoj Partitioning Game
How to solve the problem of computer networking but showing no Internet connection
What are the common computer problems and solutions
AST (Abstract Syntax Tree)
Correlation
Mysql database - Advanced SQL statement (I)
Conditional statements of shell programming
Quick one click batch adding video text watermark and modifying video size simple tutorial
How can enterprises and developers take advantage of the explosion of cloud native landing?
How the computer flushes the local DNS cache
Electronic tube: Literature Research on basic characteristics of 6j1
Investment planning analysis and prospect prediction report of China's satellite application industry during the 14th five year plan Ⓑ 2022 ~ 2028
Blue Bridge Cup Guoxin Changtian single chip microcomputer -- software environment (II)
DR-AP40X9-A-Qualcomm-IPQ-4019-IPQ-4029-5G-4G-LTE-aluminum-body-dual-band-wifi-router-2.4GHZ-5GHz-QSD