欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)文件復制及文件夾復制幾種常用的方式

 更新時間:2023年09月26日 08:54:24   作者:Bridge?Fish  
這篇文章主要給大家介紹了關于Java實現(xiàn)文件復制及文件夾復制幾種常用的方式,java復制文件的方式其實有不少種,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

在Java中,有多種方法可以實現(xiàn)文件的復制。以下是幾種常用的方式:

使用字節(jié)流進行復制:

通過FileInputStream和FileOutputStream分別創(chuàng)建源文件和目標文件的輸入輸出流,然后通過循環(huán)讀取源文件內容,并將數(shù)據(jù)寫入目標文件中進行復制。

可以使用字節(jié)數(shù)組作為緩沖區(qū),提高復制效率。

需要手動處理流的打開、關閉和異常處理。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamCopyExample {
    public static void main(String[] args) {
        String sourceFilePath = "source.txt";
        String destinationFilePath = "destination.txt";
        try (FileInputStream fis = new FileInputStream(sourceFilePath);
             FileOutputStream fos = new FileOutputStream(destinationFilePath)) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, bytesRead);
            }
            System.out.println("文件復制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用字符流進行復制:

通過FileReader和FileWriter分別創(chuàng)建源文件和目標文件的字符流,然后通過循環(huán)讀取源文件內容,并將數(shù)據(jù)寫入目標文件中進行復制。

可以使用字符數(shù)組作為緩沖區(qū),提高復制效率。

需要手動處理流的打開、關閉和異常處理。

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CharacterStreamCopyExample {
    public static void main(String[] args) {
        String sourceFilePath = "source.txt";
        String destinationFilePath = "destination.txt";
        try (FileReader fr = new FileReader(sourceFilePath);
             FileWriter fw = new FileWriter(destinationFilePath)) {
            char[] buffer = new char[1024];
            int charsRead;
            while ((charsRead = fr.read(buffer)) != -1) {
                fw.write(buffer, 0, charsRead);
            }
            System.out.println("文件復制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用Files類的copy()方法:

在Java的NIO包中,提供了Files類的靜態(tài)方法copy(),可以直接將一個文件復制到目標位置。

可以使用StandardCopyOption枚舉類指定復制選項,例如REPLACE_EXISTING用于覆蓋已存在的目標文件。

相對于字節(jié)流和字符流,使用Files.copy()方法更簡潔方便。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Text6 {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("user.txt");
             FileOutputStream fos = new FileOutputStream("user1.txt")) {
            fis.transferTo(fos);
            System.out.println("文件復制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用Files類的copy()方法結合通道進行復制:

使用FileChannel來處理源文件和目標文件的通道,通過調用源文件通道的transferTo()或transferFrom()方法,將數(shù)據(jù)從源文件傳輸?shù)侥繕宋募?/p>

這種方式可以利用底層操作系統(tǒng)提供的文件復制機制,性能較高。

需要手動處理通道和流的打開、關閉和異常處理。

(transferTo(OutputStream out) 此方法是java9 新方法,直接實現(xiàn)復制文件。 )

import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
public class ChannelCopyExample {
    public static void main(String[] args) {
        Path sourceFilePath = Path.of("source.txt");
        Path destinationFilePath = Path.of("destination.txt");
        try (FileChannel sourceChannel = FileChannel.open(sourceFilePath);
             FileChannel destinationChannel = FileChannel.open(destinationFilePath,
                     StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING)) {
            destinationChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
            System.out.println("文件復制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用第三方庫:

Java中有一些第三方庫可以簡化文件復制操作,例如 Apache Commons IO 的FileUtils類提供了多個便捷的方法用于復制文件或目錄。

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class ApacheCommonsIOCopyExample {
    public static void main(String[] args) {
        File sourceFile = new File("source.txt");
        File destinationFile = new File("destination.txt");
        try {
            FileUtils.copyFile(sourceFile, destinationFile);
            System.out.println("文件復制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

目錄(文件夾)復制

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
public class Text7 {
    public static void main(String[] args) {
        File sourceDir = new File("D:\\A---webdate");
        File destinationDir = new File("D:\\A---webdate1");
        try {
            copyDirectory(sourceDir, destinationDir);
            System.out.println("目錄復制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//在copyDirectory()方法中,我們首先檢查目標目錄是否存在,如果不存在,則創(chuàng)建該目錄。
// 然后遍歷源目錄下的所有文件和子目錄,根據(jù)文件類型調用copyDirectory()或copyFile()方法進行復制操作。
// 對于子目錄,遞歸調用copyDirectory()方法;對于文件,調用copyFile()方法。
    public static void copyDirectory(File sourceDir, File destinationDir) throws IOException {
        if (!destinationDir.exists()) {
            destinationDir.mkdirs();
        }
        File[] files = sourceDir.listFiles();
        if (files != null) {
            for (File file : files) {
                File destinationFile = new File(destinationDir, file.getName());
                if (file.isDirectory()) {
                    copyDirectory(file, destinationFile);
                } else {
                    copyFile(file, destinationFile);
                }
            }
        }
    }
//在copyFile()方法中,我們使用Files.copy()方法將源文件的內容復制到目標文件中。
    public static void copyFile(File sourceFile, File destinationFile) throws IOException {
        Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
// 這里可以使用你前面提到的復制文件的方法,如 transferTo() 或者使用緩沖區(qū)的方式復制
    }
}

總結 

到此這篇關于Java實現(xiàn)文件復制及文件夾復制幾種常用的方式的文章就介紹到這了,更多相關Java文件復制及文件夾復制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 簡單了解java volatile

    簡單了解java volatile

    這篇文章主要介紹了了解java volatile,volatile是Java提供的一種輕量級的同步機制,在并發(fā)編程中,它也扮演著比較重要的角色。下面我們來一起學習一下吧
    2019-05-05
  • maven查看依賴樹的方法實現(xiàn)

    maven查看依賴樹的方法實現(xiàn)

    Maven依賴樹是以當前項目的POM文件為根節(jié)點,列出了所有直接或間接依賴的依賴樹結構,本文就詳細的來介紹一下如何查看,感興趣的可以了解一下
    2023-08-08
  • spring本地事務失效的原因分析

    spring本地事務失效的原因分析

    這篇文章給大家介紹了spring本地事務失效的情況原因分析,給大家羅列了五種原因分析,通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • 流式圖表拒絕增刪改查之kafka核心消費邏輯上篇

    流式圖表拒絕增刪改查之kafka核心消費邏輯上篇

    這篇文章主要為大家介紹了流式圖表拒絕增刪改查之kafka核心消費邏輯詳解的上篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Java使用Math.random()結合蒙特卡洛方法計算pi值示例

    Java使用Math.random()結合蒙特卡洛方法計算pi值示例

    這篇文章主要介紹了Java使用Math.random()結合蒙特卡洛方法計算pi值的方法,簡單說明了結合具體實例蒙特卡洛方法的原理,并結合具體實例形式分析了java使用蒙特卡洛方法計算PI值的操作技巧,需要的朋友可以參考下
    2017-09-09
  • java &與&&的區(qū)別及實例

    java &與&&的區(qū)別及實例

    這篇文章主要介紹了java &與&&的區(qū)別的相關資料,并附簡單實例,幫助大家學習理解這部分知識,需要的朋友可以參考下
    2016-10-10
  • java?web實現(xiàn)簡單登錄注冊功能全過程(eclipse,mysql)

    java?web實現(xiàn)簡單登錄注冊功能全過程(eclipse,mysql)

    前期我們學習了javaweb項目用JDBC連接數(shù)據(jù)庫,還有數(shù)據(jù)庫的建表功能,下面這篇文章主要給大家介紹了關于java?web實現(xiàn)簡單登錄注冊功能的相關資料,需要的朋友可以參考下
    2022-07-07
  • Java中的Web MVC簡介_動力節(jié)點Java學院整理

    Java中的Web MVC簡介_動力節(jié)點Java學院整理

    MVC模型是一種架構型的模式,本身不引入新功能,只是幫助我們將開發(fā)的結構組織的更加合理,使展示與模型分離、流程控制邏輯、業(yè)務邏輯調用與展示邏輯分離
    2017-09-09
  • 詳解Java中Math.round()的取整規(guī)則

    詳解Java中Math.round()的取整規(guī)則

    這篇文章主要介紹了詳解Java中Math.round()的取整規(guī)則,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • java 輸入一個數(shù)字,反轉輸出這個數(shù)字的值(實現(xiàn)方法)

    java 輸入一個數(shù)字,反轉輸出這個數(shù)字的值(實現(xiàn)方法)

    下面小編就為大家?guī)硪黄猨ava 輸入一個數(shù)字,反轉輸出這個數(shù)字的值(實現(xiàn)方法)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10

最新評論