1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phần mềm nén và giải nén

31 555 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 1,09 MB

Nội dung

Phần mềm nén và giải nén

1 z BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI - CS - - BÀI TẬP LỚN MÔN CÔNG NGHỆ JAVA Đề Tài : PHẦN MỀM NÉN VÀ GIẢI NÉN Lớp : CÔNG NGHỆ THÔNG TIN – K54 Giảng viên hướng dẫn: KS LÊ NHẬT TÙNG Hồ Chí Minh, 5/2015 z BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI - CS - - BÀI TẬP LỚN MÔN CÔNG NGHỆ JAVA Đề Tài : PHẦN MỀM NÉN VÀ GIẢI NÉN Lớp : CÔNG NGHỆ THÔNG TIN – K54 Giảng viên hướng dẫn: KS LÊ NHẬT TÙNG Hồ Chí Minh, 5/2015 LỜI MỞ ĐẦU Công nghệ thông tin ngày có vai trò quan trọng trong sống ngày chúng ta.Việc ứng dụng CNTT vào lĩnh vực đời sống giúp công việc tiến hành nhanh chóng hiệu hơn.Ngày nhu cầu trao đổi thông tin qua mạng phổ biến việc trao đổi liệu có kích thước lớn khó khăn, đòi hỏi phải có phương pháp hỗ trợ để việc trao đổi trở nên thuật tiện Từ nhu cầu trên, chúng em sử dụng vốn kiến thức học từ thầy cô, bạn bè tìm hiểu thân cá nhân nhóm để tới việc tạo phần mềm “ Nén Và Giải Nén File’’ Mục đích nén tập tin lại cho thuận tiện cho việc trao đổi lưu trữ, chương trình có mục cắt nối file Ngày nay, nén file giúp cho trình trao đổi thuận tiện mà cắt nối file góp phần không nhỏ vào trình Đối với tập tin lớn việc chia nhỏ chúng nén lại thực trình trao đổi vận chuyển trở nên dễ dàng nhiều Đó mục tiêu cuối mà phần mềm muốn hớng tới Trải qua công đoạn phần mềm xây dựng xong đúc kết lại báo cáo Phần mềm mang tính chất thử nghiệm để học hỏi , trao đổi kinh nghiệm Đề tài gồm chương: Chương I: TỔNG QUAN ĐỀ TÀI Chương II : CHƯƠNG TRÌNH Tuy cố gắng học hỏi dựa kiến thức học phần mềm tránh khỏi sai sót Kính mong quý thấy cô bạn bè thông cảm góp ý để nhóm kịp thời lấp kín lỗ hỏng kiến thức phần mềm đạt hiệu cao TP.HCM,tháng 5/2015 Nhóm thực Mục Lục CHƯƠNG I: TỔNG QUAN ĐỀ TÀI Nhiệm vụ đề tài: • Tìm hiểu cấu nén giải nén tập tin thư viện java.util.zip • Tìm hiểu cấu cắt nối tập tin • Hiện thực hoá code Mục tiêu yêu cầu đề tài: • Một phần mềm nén giải nén cần chức sau: o Đối với nén file:  Cho phép tạo lại chương trình qua thao tác new  Thêm tập tin vào danh sách tập tin để nén  Xoá khỏi danh sách tập tin không muốn nén  Phải nén tập tin yêu cầu dung lượng nhỏ dung lượng tập tin gốc  Giao diện rõ ràng dễ sử dụng  Có hướng dẫn cụ thể  Thông báo hoàn tất o Đối với giải nén:  Cho phép tạo lại chương trình qua thao tác new  Thêm tập tin vào danh sách muốn giải nén  Giải nén đầy đủ file  Yêu cầu phải file có đuôi zip chương trình hỗ trợ tập tin có đuôi zip  Giao diện rõ ràng  Có hướng dẫn cụ thể  Thông báo hoàn tất chương trình • Một phần mềm cắt nối file cần có chức sau: o Đối với cắt:  Cho phép tạo chương trình qua thao tác new  Giao diện rõ ràng dễ sử dụng  Cắt tất file có dung lượng lớn nhỏ  Được phép chọn thể loại cắt như: cắt theo số phần dung lượng  Có hướng dẫn cụ thể  Thông báo hoàn tất chương trình o Đối với nối:  Cho phép tạo  Giao diện rỗ ràng  Nối file đc đánh dấu số  Tự động tìm nối part hoàn tất  Trả lại dung lượng dung lượng file gốc  Không bị hư hỏng  Có hướng dẫn cụ thể CHƯƠNG II: CHƯƠNG TRÌNH I a) • • • CƠ SỞ LÝ THUYẾT Cơ chế nén giải nén tập tin Zip Cơ sở nén tập tin Về chất File nén phức tạp khó hiểu, kết nhiều công đoạn sáng chế người thông minh Zip sử dụng chế Lossless để sử lý vấn đề nén giải nén Về bản, kiểu nén Lossless dùng thuật toán đơn giản phần liệu dư thừa, không cần thiết không làm liệu Để dễ hình dung hơn, bạn tưởng tượng chồng gạch xếp hình đại diện cho liệu đầy đủ Bạn thấy có hai khối gạch màu đỏ, năm màu vàng ba màu xanh Các viên gạch màu đại diện cho phần liệu giống lặp lại Tuy nhiên cách thức để đại diện cho liệu, thay đổi chúng hình 10 • Xử lý kiện: 17 18 • Hàm main: • Đối với cắt file: o Hàm chính: 19 • Đối với nối: 20 • Xử lý kiện: 21 22 23 Demo: 24 25 26 27 28 29 30 31 [...]... "fffffffuuuuuuuuuuuucc" và sau khi nén kiểu Lossless nó sẽ thành "f7u12c2" • Tuy nhiên có rất nhiều dạng nén Lossless được sử dụng các thuật toán khác nhau, trên đây chỉ là một dạng đơn giản trong số đó Nhưng về bản chất, các dữ liệu 11 sau khi được nén đều có thể tái tạo lại toàn bộ như dữ liệu ban đầu sau khi giải nén, không có mất mát và thay đổi gì • Các phần mềm như WinZip đều dựa trên kiểu nén Lossless... file dữ liệu sau khi bị nén sẽ có dung lượng nhỏ hơn, tuy nhiên sau khi giải nén dữ liệu sẽ được khôi phục lại như ban đầu, không có phần dữ liệu nào bị mất đi Trong các file hình ảnh, PNG cũng là một định dạng được nén theo kiểu Lossless b) Trong java • Java hỗ trợ nén file thông qua thư viện java.util.zip và java.util.jar • Đáng tiếc là thư viện này không thể đọc và giải nén các định dạng phổ biến... bạn chỉ cần một thuật toán chú thích và ba khối gạch để đại diện cho 10 khối gạch ở trên Bạn vẫn có đầy đủ thông tin về các loại gạch bao gồm màu đỏ, vàng và xanh và số lượng của chúng Trong khi không gian đã được giảm đi đáng kể Ví dụ đơn giản này cho bạn một khái niệm cơ bản về kiểu nén Lossless, các thông tin giống nhau được thay thế bằng một thông tin đại diện và thuật toán cho biết số lượng của... được < 0 o Bước 7: Đóng file • Đối với giải nén: o Bước 1: Tạo bộ lọc luồng vào ZipInputStream từ FileInputStream và đường dẫn file nén ZipInputStream zis = new ZipInputStream(new FileInputStream(filepath)); o Bước 2: Tạo ZipEntry gắn với đối tượng của ZipInputStream ZipEntry ze = zis.getNextEntry(); o Bước 3: Tạo file mới từ đường dẫn, tên file lấy từ ZipEntry và dòng output từ file String fileName... nén, đường dẫn lưu file nén o Bước 2 : Tạo thư mục cha cho file output outputZipFile.getParentFile().mkdirs(); o Bước 3: Lấy tất cả danh sách các thư mục con trong thư mục vừa chọn nếu nó là thư mục List allFiles = this.listChildFiles(inputDir); o Bước 4: Tạo đường dẫn và đẩy vào ZipEntry ZipEntry ze = new ZipEntry(entryName); o Bước 5 : Đọc dữ liệu file cần zip và ghi vào luồng zip o Bước 6:... 7zip Để giải sử lý các định dạng rar, 7zip, cần có một thư viện khác • Sơ đồ • Java.util.zip coi các file trong file zip là các ZipEntry datas.zip Document.docx Java.docx Data.docx Untulyty.png Readme.txt ZipEntry 12 2 Hiện thực hoá code a) Thuật toán : • Đối với nén : Input : đường dẫn đến thư mục, đường dẫn lưu thư mục Output : file đã được nén o Bước 1 : Nhập đường dẫn thư mục hoặc tập tin để nén, ... = new FileOutputStream(newFile); o Bước 4: Đọc dữ liệu từ dòng zis và ghi xuống dòng ra fos.write(buffer, 0, len); o Bước 5: len < 0 dừng việc ghi, đẩy ze lên đối tượng tiếp theo ze = zis.getNextEntry(); o Bước 6: ze != null dừng việc ghi và đóng file • Đối với cắt file: o Bước 1: Nhập đường dẫn file đích, đường dẫn lưu file và số phần hoặc dung lượng o Bước 2: Lấy kích thước của tập tin int sizeOfFile... bằng số phần hoặc số MB cần cắt để bắt đầu việc đọc ghi: int byteRemainder = sizeSplit; o Bước 5: Đọc toàn bộ thông tin từ file lên bộ đệm, gán bằng byteRead byteRead = bis.read(bytes) o Bước 6: Ghi xuống bộ đệm dích bos.write(bytes, 0, byteRead); giảm số phần đọc xuống bằng cách trừ đi số byte thực đọc byteRemainder - = byteRead; o Bước 7: Lặp lại bước 6 cho tới khi byteRemainder < 0 thoát và đóng... xuống bộ đệm gắn với file đầu ra, tăng chỉ số đếm file lên 1 o Bước 4: nếu file kế tiếp k tồn tại, dừng việc đọc, đóng file, kết thúc b) Mã hoá • Nén file o Hàm chính: 14 15 o Hàm phụ: đóng file o Hàm phụ: load tất cả các file con trong thư mục cha • Đối với giải nén: o Hàm chính: 16 • Xử lý sự kiện: 17 18 • Hàm main: • Đối với cắt file: o Hàm chính: 19 • Đối với nối: 20 • Xử lý sự kiện: 21 22 23 3 Demo:

Ngày đăng: 13/08/2016, 08:27

TỪ KHÓA LIÊN QUAN

w