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

anlavn.net.DocNet Maven / Gradle / Ivy

package anlavn.net;
// Make By Bình An || AnLaVN || KatoVN

import anlavn.file.Log;
import anlavn.ui.DownloadPopup;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**Lớp DocNet hỗ trợ đọc tài liệu trực tuyến từ URL.
 * @author AnLaVN - https://github.com/AnLaVN
 */
public class DocNet {
    private InputStream ins;
    private BufferedReader br;
    private URL url;
    private String fileName;
    private DocNet() {}
    
    
    /**Tạo một tài liệu trực tuyến từ URL.
     * @param URL là liên kết đến tài liệu trực tuyến của bạn.
     * @throws java.io.IOException ném ngoại lệ nếu có lỗi như không có kết nối internet, URL không đúng định dạng hoặc tài liệu không tồn tại.
     */
    public DocNet(String URL) throws IOException{
        fileName = URL.substring(URL.lastIndexOf("/") + 1);
        url = new URL(URL);
        ins = url.openStream();
        br = new BufferedReader(new InputStreamReader(ins));
    }
    
    
    /**Sử dụng phương thức này để lấy số byte của liên kết.
     * @return số byte của liên kết.
     * @throws IOException ném ngoại lệ nếu có lỗi như không có kết nối internet hoặc tài liệu không tồn tại.
     */
    public final long getSize() throws IOException {
        HttpURLConnection con = null;
        try {
            con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("HEAD");
            return con.getContentLengthLong();
        } finally { if (con != null) con.disconnect();  }
    }
    
    
    /**Sử dụng phương thức này để đọc một dòng văn bản.
Một dòng được coi là kết thúc bởi '\n', '\r', theo sau là dấu xuống dòng hoặc đến cuối tệp. * @return Chuỗi chứa nội dung của dòng, không bao gồm bất kỳ ký tự kết thúc dòng nào hoặc null nếu đã đến cuối luồng mà không đọc bất kỳ ký tự nào. * @throws java.io.IOException ném ngoại lệ nếu có lỗi như không có kết nối internet hoặc tài liệu không tồn tại. */ public final String readLine() throws IOException{ return br.readLine(); } /**Sử dụng phương thức này để đọc tất cả các dòng văn bản. * @return Chuỗi chứa nội dung của tài liệu trực tuyến. * @throws java.io.IOException ném ngoại lệ nếu có lỗi như không có kết nối internet hoặc tài liệu không tồn tại. */ public final String readAllLine() throws IOException{ return new String(ins.readAllBytes(), "UTF-8"); } /**Sử dụng phương thức này để lưu tệp về máy của bạn. * @throws java.io.IOException ném ngoại lệ nếu có lỗi như không có kết nối internet hoặc tài liệu không tồn tại. */ public final void saveAs() throws IOException { saveAs(fileName); } /**Sử dụng phương thức này để lưu tệp về máy của bạn. * @param filePath là đường dẫn tệp bạn muốn lưu file. * @throws java.io.IOException ném ngoại lệ nếu có lỗi như không có kết nối internet hoặc tài liệu không tồn tại. */ public final void saveAs(String filePath) throws IOException { Log.add("Doc Net - Start collecting information."); FileOutputStream outputStream = new FileOutputStream(filePath); byte[] buffer = new byte[16384]; int bytesRead = -1; long totalBytesRead = 0, fileSize = getSize(); Log.add("Doc Net - Collect information successfully:\n\t\tFile name \"" + fileName + "\", total size " + fileSize + " bytes."); DownloadPopup dp = new DownloadPopup(); dp.start("Download " + fileName); while ((bytesRead = ins.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); totalBytesRead += bytesRead; dp.setContent(totalBytesRead + " / " + fileSize + " bytes"); dp.setValue((int) (totalBytesRead * 100 / fileSize)); } dp.stop(); Log.add("Doc Net - Save file successfully:\n\t\tFile path \"" + filePath + "\", total size " + fileSize + " bytes."); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy