Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Xin hướng dẫn 1 bài về đĩa mềm

  1. #1
    Ngày gia nhập
    10 2007
    Nơi ở
    TP. HCM
    Bài viết
    52

    Mặc định Xin hướng dẫn 1 bài về đĩa mềm

    Mình đang làm bài tập lớn môn cơ sở lập trình 2. Đề bài của mình có 4 câu là viết chương trình quản lý đĩa mềm gồm các thao tác:
    1. QuickFormat
    2. Giả lập DiskCopy
    3. Đọc và hiển thị nội dung tập tin trên thư mục gốc ổ A
    4. Mở rộng: đọc và hiển thị nội dung tập tin trên thư mục bất kỳ.

    2 câu đầu thì làm được rồi, còn câu 3, 4 chưa làm được. Đối với câu 3 mình có ý tưởng thế này: đọc RDET để lấy được tên tập tin rồi dùng các hàm đọc tập tin bình thường, nhưng mà như vầy chỉ đọc được tập tin tại thư mục gốc, còn câu 4 thì đọc ở thư mục bất kỳ. Làm sao để biết nó nằm trong sub folder nào mà có đường dẫn chính xác để đọc? hay là có cách nào khác nữa. Chương trình mình có sử dụng các hàm đọc ghi trên sector là absread và abswrite. Ai biết xin hướng dẫn ý tưởng giùm mình. Thanks!
    /* The thing that I think is the thing that I do. */

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn phải nắm về cấu trúc FAT mới được. Bảng FAT sẽ mô tả vị trí của các file và thư mục.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2007
    Nơi ở
    TP. HCM
    Bài viết
    52

    Bạn nói cụ thể hơn được không? theo mình tìm hiểu thì các entry của FAT chỉ lưu tình trạng của cluster trên vùng data thôi. Ý mình hỏi là ý tưởng về đọc và hiển thị 1 tập tin ở thư mục bất kỳ nằm trong đĩa A. Đối với các tập tin hay folder nằm ngay tại thư mục gốc thì mình đọc các entry của RDET đã biết được tên của tập tin (tên + phần mở rộng). Nhờ vậy mình có thể dùng các hàm đọc tập tin bình thường để đọc chúng. Nhưng vấn đề là các tập tin nằm trong các thư mục con thì mình không biết được đường dẫn chính xác để đọc chúng.

    Ví dụ trên thư mục gốc đĩa A có lưu tập tin TEXT1.TXT và folder BAITAP. Trong folder BAITAP lại lưu tập tin TEXT2.TXT. Khi mình đọc các entry của RDET (dùng các hàm đọc sector) thì mình đã "biết" được trên thư mục gốc đĩa A có chứa TEXT1.TXT và folder BAITAP. "Biết" ở đây là xác định được trên thư mục gốc đĩa A có lưu trữ 1 tập tin và 1 folder + tên của chúng. Nhờ vào tên của tập tin (TEXT1.TXT) nên mình có thể sử dụng các hàm đọc tận tin bình thường. Vấn đề ở đây là khi đọc RDET chỉ biết được trên thư mục gốc đĩa A có những gì thôi, cụ thể ở đây là tập tin TEXT1.TXT và folder BAITAP, còn bên trong folder BAITAP có chứa gì thì không biết, ở vd này BAITAP có chưa TEXT2.TXT nhưng làm sao để "biết" được đường dẫn chính xác của tập tin TEXT2.TXT là A:\\BAITAP\\TEXT2.TXT để mà đọc nó.

    Đó chỉ là cách nghĩ của mình, đọc tập tin bằng cách hàm có sẵn. Còn như meoconlongvang nói là nắm cấu trúc FAT để nhờ đó đọc tập tin thì mình không biết cách này. Bạn nói rõ hơn được không, nếu thông qua FAT để đọc thì phải đọc như thế nào?
    /* The thing that I think is the thing that I do. */

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bảng FAT ngoài việc chức thông tin về bad sector thì nó còn chứa thông tin về file gồm có : tên file, danh sách các sector của file đó. Bạn vào đây xem mô tả về bảng FAT.
    http://www.ntfs.com/fat-systems.htm
    Mình lâu quá ko vọc sâu đến cấu trúc luận lý của ổ đĩa nên cũng quên khá nhiều. Mình nghĩ mình ko giúp nhiều cho bạn được. Nhưng mình nghĩ nếu bạn đọc kỹ hướng dẫn trong trang mình đưa thì chắc chắn bạn có thể làm được bài đó thôi.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn