Java - Tạo ứng dụng sao chép tập tin bằng cách sử dụng Stream của Java(How to created application copy file with Stream).



Để bắt đầu tạo ứng dụng sao chép tập tin(file) ta sẽ tìm hiểu sơ khái miện về Stream.

Dịnh sang tiếng việt nghĩa cơ bản có nghĩa là sông, nghĩa theo đông từ có nghĩa là dòng chảy, và theo nghĩa lập trình thì nó lại được dịnh là là luồng.

Theo định nghĩa tiếp thu thược thì tôi hiểu luồng trong lập trình là một dòng chảy dữ liệu được chảy từ một  nơi mã nguồn dữ liệu này(như chương trình, thiết bị....) tới một nơi lưu trữ mã nguồn dữ liệu khác.




Theo định nghĩa trên thì luồng phân loại thành 2 dạng:
  • Luồng nhập(Stream Input)
  • Luồng xuất(Stream Output)

Bên dưới là một phương thức dùng Stream để sao chép tập tin.
private static void copyFileUsingStream(File source, File dest) throws IOException {
    InputStream is = null;
    OutputStream os = null;
    try {
        is = new FileInputStream(source);
        os = new FileOutputStream(dest);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = is.read(buffer)) > 0) {
            os.write(buffer, 0, length);
        }
    } finally {
        is.close();
        os.close();
    }
}
  • File source: Tập tin nguồn để sao chép.
  • File dest: Tập tin cần sao chép.
  • InputStream is = null: Khởi tạo luồng nhập.
  • OutputStream os = null: Khởi tạo luồng xuất.
  • is = new FileInputStream(source): Gán luồng nhập của tập tin nguồn.
  • os = new FileOutputStream(dest): Gán giá trị xuất của tập tin cần sao chép.
  • Vòng While: Được tạo để sao chép từng byte dữ liệu đến tập tin cần sao chép.

Dưới đây là toàn bộ source code của ứng dụng:
/**
 * @(#)CopyFileBasic.java
 *
 * CopyFileBasic application
 *
 * @author VNLIVES.NET
 * @version 1.00 2013/8/23
 */

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class CopyFileBasic {
   
    public static void main(String[] args) {
        // TODO, add your application code
        try {
            File fa = new File("Path File A");
            File fb = new File("Path File B");           
            copyFileUsingStream(fa, fb);
        } catch (IOException io) {
           
        }    

    }
   
    private static void copyFileUsingStream(File source, File dest) throws IOException {
        InputStream is = null;
        OutputStream os = null;
        try {
            is = new FileInputStream(source);
            os = new FileOutputStream(dest);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        } finally {
            is.close();
            os.close();
        }
    }   
   
}














1 comment: