更新時間:2022-08-04 10:44:41 來源:動力節點 瀏覽2224次
Java拷貝文件方法有哪些?動力節點小編來為大家總結了一下。使用java語言復制文件主要有3種方式。它們如下所示:
使用文件流(樸素方法)
使用 FileChannel 類
使用文件類。
注意:還有許多其他方法,例如 Apache Commons IO FileUtils,但我們僅討論使用 java 類復制文件。
這是一種天真的方法,我們使用文件輸入流從第一個文件中獲取輸入字符,并使用文件輸出流將輸出字符寫入另一個文件。這就像看到一個文件并寫入另一個文件一樣。
例子:
// Java Program to Copy file using File Stream
// Importing input output classes
import java.io.*;
// Main Class
public class GFG {
// Main driver method
public static void main(String[] args)
throws IOException
{
// Creating two stream
// one input and other output
FileInputStream fis = null;
FileOutputStream fos = null;
// Try block to check for exceptions
try {
// Initializing both the streams with
// respective file directory on local machine
// Custom directory path on local machine
fis = new FileInputStream(
"C:\\Users\\Dipak\\Desktop\\input.txt");
// Custom directory path on local machine
fos = new FileOutputStream(
"C:\\Users\\Dipak\\Desktop\\output.txt");
int c;
// Condition check
// Reading the input file till there is input
// present
while ((c = fis.read()) != -1) {
// Writing to output file of the specified
// directory
fos.write(c);
}
// By now writing to the file has ended, so
// Display message on the console
System.out.println(
"copied the file successfully");
}
// Optional finally keyword but is good practice to
// empty the occupied space is recommended whenever
// closing files,connections,streams
finally {
// Closing the streams
if (fis != null) {
// Closing the fileInputStream
fis.close();
}
if (fos != null) {
// Closing the fileOutputStream
fos.close();
}
}
}
}
輸出:
成功復制文件
對于上述程序,我們需要一個 input.txt 和一個 output.txt 文件。最初,兩個文本文件看起來像這樣
程序執行成功后,
這是一個存在于java.nio , channels 包中的類,用于寫入、修改、讀取文件。此類的對象創建一個可搜索的文件通道,通過該通道執行所有這些活動。這個類基本上提供了兩個方法,命名如下:
transferFrom(ReadableByteChannel src, long position, long count):將字節傳輸到從src通道調用此方法的通道。這由目標通道調用。該位置是指針的位置,從該位置開始復制操作。Count 指定文件的大小,它幾乎等于它包含的內容量。
transferTo(long position, long count, WritableByteChannel target):將字節從源或方法調用通道傳輸到文件的目標通道。此方法主要使用源通道調用,Count 提到源文件的大小和要復制的位置
因此,我們可以使用這兩種方法中的任何一種來傳輸文件數據并復制它們。
例子:
// Java Program to Copy Files Using FileChannel Class
// Importing java.nio package for network linking
// Importing input output classes
import java.io.*;
import java.nio.channels.FileChannel;
// Main Class
public class GFG {
// Main driver method
public static void main(String[] args)
throws IOException
{
// Creating two channels one input and other output
// by creating two objects of FileChannel Class
FileChannel src
= new FileInputStream(
"C:\\Users\\Dipak\\Desktop\\input.txt")
.getChannel();
FileChannel dest
= new FileOutputStream(
"C:\\Users\\Dipak\\Desktop\\output.txt")
.getChannel();
// Try block to check for exceptions
try {
// Transferring files in one go from source to
// destination using transferFrom() method
dest.transferFrom(src, 0, src.size());
// we can also use transferTo
// src.transferTo(0,src.size(),dest);
}
// finally keyword is good practice to save space in
// memory by closing files, connections, streams
finally {
// Closing the channels this makes the space
// free
// Closing the source channel
src.close();
// Closing the destination channel
dest.close();
}
}
}
輸出:
對于上述程序,我們需要一個 input.txt 和一個 output.txt 文件。最初,兩個文本文件看起來像這樣
程序執行成功后,
這是java.nio.File包中的一個類。該類提供了 3 種復制文件的方法,如下所示:
copy(InputStream in, Path target):將輸入文件流中的所有字節數據復制到輸出文件的輸出路徑。它不能用于復制源文件中的指定部分。在這里,我們不需要創建輸出文件。它是在代碼執行期間自動創建的。
copy(Path source, OutputStream out):將path source中指定的文件中的所有字節復制到輸出文件的輸出流中。
復制(路徑源,路徑目標):使用源文件和目標文件的路徑復制文件。也不需要在這里創建輸出文件。
例子:
import java.nio.file.Files;
import java.io.*;
// save the file named as GFG.java
public class GFG{
// main method
public static void main(String[] args) throws IOException{
// creating two channels
// one input and other output
File src = new File("C:\\Users\\Dipak\\Desktop\\input.txt");
File dest = new File("C:\\Users\\Dipak\\Desktop\\output.txt");
// using copy(InputStream,Path Target); method
Files.copy(src.toPath(), dest.toPath());
// here we are not required to have an
// output file at the specified target.
// same way we can use other method also.
}
}
輸出:
對于上述程序,我們需要一個 input.txt 和一個 output.txt 文件。最初,兩個文本文件看起來像這樣。
程序執行成功后,
注意:在所有這些方法中,第一種方法的處理速度很快,但如果有人想要技術更先進,他們可以選擇其他兩種方法。FileChannel 方法還為我們提供了很多選項來控制要復制的文件部分并指定其大小。
以上就是關于“Java拷貝文件方法總結”,大家如果對此比較感興趣,想了解更相關知識,可以關注一下動力節點的Java在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習