1. 程式人生 > >java實現檔案拷貝!

java實現檔案拷貝!

一、使用讀取位元組流的方式進行檔案的拷貝。
當檔案較小時,可通過以下程式碼實現檔案的拷貝。

版本一程式碼如下:

package webnet.course1.filecopy;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy {
    public static void main(String[] args) {
        int
n = 0; try { FileInputStream fis = new FileInputStream("f:\\files\\1.txt"); FileOutputStream fos = new FileOutputStream("f:\\files\\copy.txt"); while ((n = fis.read()) != -1) { fos.write(n); } fis.close(); fos.close(); } catch
(FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

檔案一般儲存於硬碟之上,屬於外圍裝置。FileInputStream的read()方法每次讀取一個位元組的資料。當拷貝的檔案較大(如10M左右)或者拷貝的檔案為視訊(檔案不超過30M)等格式時,使用版本一的程式碼需要時間較長,可使用版本二程式碼進行嘗試,此時速度較之版本一有較大的提升。

版本二程式碼如下:

package webnet.course1.filecopy;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy2 {

    public static void main(String[] args) {
        int n = 0;

        try {
            FileInputStream fis = new FileInputStream("f:\\files\\1.txt");
            FileOutputStream fos = new FileOutputStream("f:\\files\\copy.txt");

            byte[] bs = new byte[fis.available()]; 

            while ((n = fis.read(bs)) != -1) {
                fos.write(bs);
            }

            fis.close();
            fos.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

當拷貝的檔案更大一些(如>10M)或者拷貝的檔案為視訊(1G左右)等格式時,使用版本二的程式碼佔用的空間會比較大,可使用版本三程式碼進行嘗試。

版本三程式碼如下:

package webnet.course1.filecopy;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Copy3 {

    public static void main(String[] args) {
        int n = 0;

        try {
            FileInputStream fis = new FileInputStream("f:\\files\\1.txt");
            FileOutputStream fos = new FileOutputStream("f:\\files\\copy.txt");

            byte[] bs = new byte[1024*1024]; 

            while ((n = fis.read(bs)) != -1) {
                fos.write(bs,0,n);
            }

            fis.close();
            fos.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

二、使用字元流方式進行檔案拷貝。

使用字元流方式進行檔案拷貝時,要求檔案應為文字格式。若為視訊或圖片等格式,在讀取檔案時會採用字元的編碼方式,導致拷貝出的檔案與原檔案不在相同。
不進行檔案拷貝,只是讀取檔案時一顆採用字元流方式讀取。讀取出的為ASCII,可通過強制型別轉換,從而顯示出讀取內容。

package webnet.course1.filecopy;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Copy4 {

    public static void main(String[] args) {
        int n = 0;

        try {
            FileReader fis = new FileReader("f:\\files\\1.txt");
            FileWriter fos = new FileWriter("f:\\files\\copy.txt");

            while ((n = fis.read()) != -1) {
                fos.write(n);
                System.out.println((char)(n));
            }


            fis.close();
            fos.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
package webnet.course1.filecopy;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Copy4 {

    public static void main(String[] args) {
        int n = 0;

        try {
            FileReader fis = new FileReader("f:\\files\\1.txt");
            FileWriter fos = new FileWriter("f:\\files\\copy.txt");


            char[] bs = new char[10]; 

            while ((n = fis.read(bs)) != -1) {
                fos.write(bs,0,n);
            }


            fis.close();
            fos.close();

        } catch (FileNotFoundException e) {

            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

相關推薦

java實現檔案拷貝

一、使用讀取位元組流的方式進行檔案的拷貝。 當檔案較小時,可通過以下程式碼實現檔案的拷貝。 版本一程式碼如下: package webnet.course1.filecopy; import java.io.FileInputStream; import

java實現檔案拷貝的幾種方式(全

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

Java實現檔案拷貝(位元組流)

/** * 拷貝檔案示例(位元組流) */ package JavaIO; import java.io.*; /** * @author 16026 * */ public class

Java常用面試題16 用IO和NIO兩種方式實現檔案拷貝

問:用IO和NIO兩種方式實現檔案拷貝 答: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;

Java實現檔案拷貝複製

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class C

Java檔案拷貝的幾種實現方案

在jdk1.7之前,java中沒有直接的類提供檔案複製功能。下面就檔案複製,提出幾種方案。 jdk1.7中的檔案複製 在jdk1.7版本中可以直接使用Files.copy(File srcFile, File destFile)方法即可。 private static

Java實現檔案以及資料夾的建立和刪除

  1,檔案建立 /** * 建立指定路徑檔案 * * @param filePath:指定路徑(包括檔名的絕對路徑) */ public static void createFile(String filePath) { File file = new File(

利用IO流實現檔案拷貝

檔案的拷貝,只需將檔案位元組輸入流和輸出流結合起來即可 package com.jianshun; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; impo

Java實現檔案壓縮

1.壓縮 package com.zhuifeng.common.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.

java實現物件拷貝和屬性複製的使用

java實現物件拷貝和屬性複製的使用   對於某一屬性,即原始物件和目的物件的屬性名稱相同,就可以拷貝原始物件的屬性值到目的物件中。   注意屬性必須新增set,get方法,否則拷貝不成功   基本型別之間如果是屬性的型別不同,BeanUtils會嘗試去強制

HTTP POST請求報文格式分析與Java實現檔案上傳

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java實現檔案切割拼接

Java實現檔案分割和拼接 單執行緒實現 檔案分割 在老的FAT32檔案系統中,最大的單個檔案大小必須儲存在4G內,對於經常看電影的我這個是不能允許的。不過現在Windows有NTFS檔案系統,Linux大部分發行版為Ext4檔案系統,最大單個檔案大小能大於4G。不過這二者並不能相容。。格式化NTFS的

java實現檔案匯出到Excel

匯出excel功能: //首先把要匯出檔案的模板放到專案預設的地址下,(也就是webapp地址下) Controller     @RequestMapping("value="")     //匯出方法    &nbs

java實現檔案上傳_後端

maven: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <ver

java實現檔案的下載

servlet層   package com.atguigu.servlet; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; import j

java實現檔案的拆分和合並

用java實現檔案的拆分和合並 找到一個檔案,按照100k為單位,拆分成多個子檔案,並且以編號作為檔名結束。 比如檔案 資訊.xlsx,大小是389k。 拆分之後,成為 資訊.xlsx-0——100k 資訊.xlsx-1——100k 資訊.xlsx-2——100k 資訊.xlsx-3——

java實現檔案打包下載

業務場景:           從A伺服器通過SFTP將檔案下載到應用伺服器B,需要將檔案從應用伺服器B下載到使用者本地(檔案和應用都在B伺服器) 想法:           1. 想要通

Java實現檔案的歸檔和解檔

檔案的歸檔 package cn.yimen.archiver; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import jav

JAVA實現檔案ZIP壓縮並解決中文檔名亂碼問題

一、檔案壓縮的中文亂碼問題 1、中文檔名的亂碼解決 對於壓縮的檔案,當檔名稱是中文時,若使用JDK API中自帶的類(java.util.zip.ZipEntry; java.util.zip.ZipOutputStream;)進行壓縮,壓縮完成後,可以看到壓縮包中的檔名

nodejs 實現檔案拷貝

通過4中不通的方式實現對一個檔案的拷貝 方式一:readFile 非同步一次性讀取檔案再寫入 //非同步形式讀取檔案 function copyFile(url){ const extName = path.extname(url) const fileName = path.bas