Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: Tách file lớn thành các chunk theo kích thước byte

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 8: Dòng dữ liệu vào/ra và tệp — khóa Lập trình Java

    Viết chương trình tách 1 file nhị phân thành nhiều chunk:

    1. Đọc chunkSize (int) và N (int) từ stdin, sau đó N giá trị 0..255 — đại diện cho N byte.
    2. Ghi N byte vào file big.bin bằng FileOutputStream.
    3. Mở big.bin bằng FileInputStream, đọc theo buffer kích thước chunkSize (1 ≤ chunkSize ≤ 1024). Mỗi lần đọc được k > 0 byte, ghi k byte đó ra một file chunk_<index>.bin (index bắt đầu 1) bằng FileOutputStream mới. Đóng stream chunk sau mỗi lần ghi.
    4. Sau khi tách, đọc lần lượt từng file chunk_1.bin, chunk_2.bin, … vào lại, cộng dồn tổng các byte (unsigned 0..255) và đếm tổng số byte.
    5. In:
      chunks: <số file chunk đã tạo>
      bytes: <tổng số byte>
      sum: <tổng giá trị byte unsigned>
      
    • Định dạng đầu vào:
      • Dòng 1: chunkSize
      • Dòng 2: N
      • Tiếp theo: N giá trị 0..255
    • Ràng buộc đầu vào:
      • 1 ≤ chunkSize ≤ 1024
      • 0 ≤ N ≤ 10⁴
    • Định dạng đầu ra:

      3 dòng chunks: ..., bytes: ..., sum: ...

    Ví dụ:

    Đầu vào:

    3
    10
    1 2 3 4 5 6 7 8 9 10
    

    Đầu ra:

    chunks: 4
    bytes: 10
    sum: 55
    

    Giải thích:

    10 byte / 3 → 4 chunk (3+3+3+1). bytes=10, sum=55.

    Đầu vào:

    5
    5
    10 20 30 40 50
    

    Đầu ra:

    chunks: 1
    bytes: 5
    sum: 150
    

    Giải thích:

    Đúng 1 chunk. sum=150.

    Đầu vào:

    1
    4
    100 100 100 100
    

    Đầu ra:

    chunks: 4
    bytes: 4
    sum: 400
    

    Giải thích:

    chunkSize=1 → 4 chunk.

    Đầu vào:

    10
    0
    

    Đầu ra:

    chunks: 0
    bytes: 0
    sum: 0
    

    Giải thích:

    N=0 → 0 chunk, 0 byte, 0 sum.

    Đầu vào:

    256
    300
    50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50
    

    Đầu ra:

    chunks: 2
    bytes: 300
    sum: 15000
    

    Giải thích:

    chunkSize 256, 300 byte → 2 chunk (256 + 44). sum=300*50=15000.

    Chủ đề

    ☕ JavaJavaIOTất cả môn học

    Đang tải editor...