All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.anlavn.file.Raw Maven / Gradle / Ivy

There is a newer version: 6.70.10.2
Show newest version
package com.anlavn.file;
// Make By Bình An || AnLaVN || KatoVN

import com.anlavn.ui.DownloadPopup;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**Lớp Raw hỗ trợ ghi và đọc chuỗi dữ liệu Thô vào tệp tại vị trí được chỉ định.
 * @author AnLaVN
 */
public class Raw {
    private String filePath = "RawFile.txt";
    private FileOutputStream fos = null;
    private DataOutputStream dos = null;
    
    /**Tạo một tệp Thô mặc định tại vị trí "RawFile.txt".
     */
    public Raw() { }

    /**Tạo một tệp thô tại vị trí filePath.
     * @param filePath là vị trí cụ thể của tệp Thô, phần mở rộng tệp tin nên là ".txt".
     */
    public Raw(String filePath) {   
        this.filePath = filePath;  
    }
    
    
    /**Sử dụng phương thức này để lấy vị trí tập tin.
     * @return vị trí của tệp Thô.
     */
    public String getFilePath(){    return this.filePath;   }
    

    /**Sử dụng phương thức này để đóng tệp nếu bạn không muốn ghi hoặc đọc vào đó nữa.
     */
    public void closeFile(){
        try {
            if(fos != null && dos != null){     dos.flush();    dos.close();    fos.close();    }
        }catch (IOException e){
            Log.add("!!! Error try to close file \"" + filePath +"\". !!!\n\tError code: " + e.toString());
            throw new RuntimeException(e);
        }
    }
    
    
    /**Sử dụng phương thức này để ghi chuỗi dữ liệu Thô vào tệp.
     * @param Data là chuỗi dữ liệu cần ghi vào tệp.
     */
    public void writeData(String Data){
        try {
            if(fos == null || dos == null){
                fos = new FileOutputStream(filePath);
                dos = new DataOutputStream(fos);
            }
            dos.write(Data.getBytes()); 
        }catch (IOException e){
            Log.add("!!! Error try to write raw data to file \"" + filePath +"\". !!!\n\tError code: " + e.toString());
            throw new RuntimeException(e);
        }
    }
    
    
    /**Sử dụng phương thức này để đọc dữ liệu chuỗi từ tệp.
     * @return một chuỗi dữ liệu trong tệp, trả về null nếu không có gì.
     */
    public String readData(){
        try{
            FileInputStream fis = new FileInputStream(filePath);
            DataInputStream dis = new DataInputStream(fis);
            String data = new String(dis.readAllBytes());
            dis.close();    fis.close();
            return data;
        }catch(IOException e){
            Log.add("!!! Error try to read raw data from file \"" + filePath +"\". !!!\n\tError code: " + e.toString());
            throw new RuntimeException(e);
        }
    }
    
    
    /**Sử dụng phương thức này để sao chép tập tin vào thư mục chỉ định.
     * @param directory đường dẫn thư mục sẽ chứa tập tin của bạn.
     */
    public void copyTo(String directory){
        copyTo(directory, 8192);
    }
    
    
    /**Sử dụng phương thức này để sao chép tập tin vào thư mục chỉ định.
     * @param directory đường dẫn thư mục sẽ chứa tập tin của bạn.
     * @param bufferNum số lượng bộ đệm byte khi sao chép. Mặc định là 8192.
     */
    public void copyTo(String directory, int bufferNum){
        try(FileInputStream fis = new FileInputStream(filePath)){
            Log.add("Raw - Start collecting information.");
            fos = new FileOutputStream(directory);
            byte[] buffer = new byte[bufferNum];
            int bytesRead = -1, percentCompleted = 0;
            long totalBytesRead = 0, fileSize = fis.getChannel().size();
            Log.add("Raw - Collect information successfully:\n\t\tFile name \"" + filePath + "\", total size " + fileSize + " bytes.");
            DownloadPopup dp = new DownloadPopup();
            dp.tittle.setText("Chép " + filePath + " -> " + directory);
            dp.setVisible(true);
            Log.add("Raw - Start copy file:\n\t\tFile name \"" + filePath + "\", buffer size " + bufferNum + " bytes.");
            while ((bytesRead = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, bytesRead);
                totalBytesRead += bytesRead;
                percentCompleted = (int) (totalBytesRead * 100 / fileSize);
                dp.content.setText(totalBytesRead + " / " + fileSize + " bytes");
                dp.bar.setValue(percentCompleted);
            }
            dp.bar.stopAnimation();
            dp.dispose();
            Log.add("Raw - Copy file successfully:\n\t\tFile name \"" + filePath + "\" to \"" + directory + "\" directory.");
            fis.close();
            closeFile();
        } catch(IOException e){
            Log.add("!!! Error try to copy file \"" + filePath +"\" to \"" + directory + "\" directory. !!!\n\tError code: " + e.toString());
            throw new RuntimeException(e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy