NỘI DUNG BÀI VIẾT
Mục tiêu
Luyện tập làm việc với file binary.
Mô tả
Viết một ứng dụng cho phép copy các file có dung lượng lớn.
Ứng dụng cho phép nhập vào đường dẫn của file nguồn, đường dẫn của thư mục đích và sao chép file nguồn sang thư mục đích.
Hướng dẫn
Bước 1: Tạo class Main, Trong lớp Main thực hiện tạo 2 phương thức private static
void copyFileUsingJava7Files(File source, File dest)
và
void copyFileUsingStream(File source, File dest)
Bước 2: Cài đặt phương thức copyFileUsingJava7Files
Copy file sử dụng java 7 Files class
private static void copyFileUsingJava7Files(File source, File dest) throws IOException { Files.copy(source.toPath(), dest.toPath(), StandardCopyOption.REPLACE_EXISTING); }
Bước 3: Cài đặt phương thức copyFileUsingStream
Copy file sử dụng streams
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(); } }
Bước 4: Tạo method main cho phép nhập vào đường dẫn của file nguồn, đường dẫn của thư mục đích và gọi 2 method trên và kiểm tra kết quả
public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.printf("Enter source file:"); String sourcePath = in.nextLine(); System.out.printf("Enter destination file:"); String destPath = in.nextLine(); File sourceFile = new File(sourcePath); File destFile = new File(destPath); try { copyFileUsingJava7Files(sourceFile, destFile); //copyFileUsingStream(sourceFile, destFile); System.out.printf("Copy completed"); } catch (IOException ioe) { System.out.printf("Can't copy that file"); System.out.printf(ioe.getMessage()); } }
Bước 5: Chạy chương trình và quan sát kết quả
Output:
- TH copy file thành công
Enter source file:D:\Source\TestSite.rar
Enter destination file:D:\Source\Java\TestOuput.rar
Copy completed
- TH copy file thất bại
Enter source file:try copy
Enter destination file:try copy
Can’t copy that file try copy