最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

使用字節(jié)流進(jìn)行復(fù)制:

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

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

需要手動(dòng)處理流的打開、關(guān)閉和異常處理。

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("文件復(fù)制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用字符流進(jìn)行復(fù)制:

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

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

需要手動(dòng)處理流的打開、關(guān)閉和異常處理。

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("文件復(fù)制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用Files類的copy()方法:

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

可以使用StandardCopyOption枚舉類指定復(fù)制選項(xiàng),例如REPLACE_EXISTING用于覆蓋已存在的目標(biāo)文件。

相對(duì)于字節(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("文件復(fù)制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用Files類的copy()方法結(jié)合通道進(jìn)行復(fù)制:

使用FileChannel來處理源文件和目標(biāo)文件的通道,通過調(diào)用源文件通道的transferTo()或transferFrom()方法,將數(shù)據(jù)從源文件傳輸?shù)侥繕?biāo)文件。

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

需要手動(dòng)處理通道和流的打開、關(guān)閉和異常處理。

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

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("文件復(fù)制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用第三方庫:

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

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("文件復(fù)制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

目錄(文件夾)復(fù)制

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("目錄復(fù)制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//在copyDirectory()方法中,我們首先檢查目標(biāo)目錄是否存在,如果不存在,則創(chuàng)建該目錄。
// 然后遍歷源目錄下的所有文件和子目錄,根據(jù)文件類型調(diào)用copyDirectory()或copyFile()方法進(jìn)行復(fù)制操作。
// 對(duì)于子目錄,遞歸調(diào)用copyDirectory()方法;對(duì)于文件,調(diào)用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()方法將源文件的內(nèi)容復(fù)制到目標(biāo)文件中。
    public static void copyFile(File sourceFile, File destinationFile) throws IOException {
        Files.copy(sourceFile.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
// 這里可以使用你前面提到的復(fù)制文件的方法,如 transferTo() 或者使用緩沖區(qū)的方式復(fù)制
    }
}

總結(jié) 

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

相關(guān)文章

  • 使用spring連接及操作mongodb3.0實(shí)例

    使用spring連接及操作mongodb3.0實(shí)例

    這篇文章主要介紹了使用spring連接及操作mongodb3.0實(shí)例,詳細(xì)的介紹了使用spring的情況下,在java中簡單操作mongodb。有興趣的可以了解一下。
    2016-12-12
  • java實(shí)現(xiàn)斐波那契數(shù)列的3種方法

    java實(shí)現(xiàn)斐波那契數(shù)列的3種方法

    這篇文章主要介紹了java實(shí)現(xiàn)斐波那契數(shù)列的3種方法,有需要的朋友可以參考一下
    2014-01-01
  • Java 詳細(xì)講解分治算法如何實(shí)現(xiàn)歸并排序

    Java 詳細(xì)講解分治算法如何實(shí)現(xiàn)歸并排序

    分治算法的基本思想是將一個(gè)規(guī)模為N的問題分解為K個(gè)規(guī)模較小的子問題,這些子問題相互獨(dú)立且與原問題性質(zhì)相同。求出子問題的解,就可得到原問題的解,本篇文章我們就用分治算法來實(shí)現(xiàn)歸并排序
    2022-04-04
  • 如何在 Spring Boot 中配置和使用 CSRF 保護(hù)

    如何在 Spring Boot 中配置和使用 CSRF 保護(hù)

    CSRF是一種網(wǎng)絡(luò)攻擊,它利用已認(rèn)證用戶的身份來執(zhí)行未經(jīng)用戶同意的操作,Spring Boot 提供了內(nèi)置的 CSRF 保護(hù)機(jī)制,可以幫助您防止這種類型的攻擊,這篇文章主要介紹了Spring?Boot?中的?CSRF?保護(hù)配置的使用方法,需要的朋友可以參考下
    2023-09-09
  • mybatis?傳入null值的解決方案

    mybatis?傳入null值的解決方案

    這篇文章主要介紹了mybatis?傳入null值的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • echarts圖表導(dǎo)出excel示例

    echarts圖表導(dǎo)出excel示例

    這篇文章主要介紹了echarts圖表導(dǎo)出excel示例,需要的朋友可以參考下
    2014-04-04
  • 在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明

    在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明

    這篇文章主要介紹了在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟

    SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟

    本文主要介紹了SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 10個(gè)SpringBoot框架內(nèi)置的實(shí)用功能詳解

    10個(gè)SpringBoot框架內(nèi)置的實(shí)用功能詳解

    在 Spring Boot 開發(fā)中,框架內(nèi)置的諸多實(shí)用功能猶如一把把利刃,能讓開發(fā)者在項(xiàng)目的各個(gè)階段都事半功倍,這些功能無需額外集成,通過簡單配置或編碼即可快速實(shí)現(xiàn)常見需求,下面將為你深入解析一系列極具價(jià)值的內(nèi)置功能,需要的朋友可以參考下
    2025-06-06
  • IDEA緩存配置等位置更改過程

    IDEA緩存配置等位置更改過程

    本文介紹了將IDEA移動(dòng)到D盤的具體步驟,包括找到原存儲(chǔ)目錄、創(chuàng)建目標(biāo)存儲(chǔ)目錄、關(guān)閉IDEA和JetBrainsToolbox、移動(dòng)文件、刪除原目錄以及創(chuàng)建符號(hào)鏈接等步驟
    2026-04-04

最新評(píng)論

陕西省| 江永县| 定陶县| 汽车| 临夏县| 清丰县| 三江| 麟游县| 仪征市| 五常市| 蓝田县| 西乡县| 托里县| 尤溪县| 清流县| 太原市| 天镇县| 邵阳县| 张家界市| 舒城县| 吉木乃县| 疏附县| 三门峡市| 江阴市| 沙湾县| 鹰潭市| 合肥市| 广宗县| 平谷区| 应城市| 波密县| 安徽省| 耒阳市| 偏关县| 和林格尔县| 伊春市| 西乡县| 阳春市| 洛宁县| 桂阳县| 汤阴县|