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

Đề tài: File System with C++

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    21

    Mặc định File System with C++

    Chào mọi người !

    Mình có ý tưởng như vậy, project trong C++ chưa có bài viết nào về hệ thống tập tin (FAT, NTFS) thế tại sao mình không tự nghĩ ra 1 project dạng như vậy mà tìm hiểu chứ ?

    Mình có ý tưởng viết 1 chương trình đơn giản thôi (ở đây mình chỉ xét FAT tại vì thông tin của NTFS thì mình ko có) như: Hiển thị nội dung của Boot Sector, hiển thị bảng RDET, đọc nội dung của bảng FAT (đọc ra từng phần tử của FAT) - (của tất cả loại FAT 12 16 32). Sau đó sẽ nghiên cứu tới các vấn đề pro hơn như: derag, slipt file, quản lý file (tương tự total - chà cái này khó à nha ) ....

    Ý tưởng là vậy nếu bạn nào có cùng ý tưởng với mình có thể cùng tìm hiểu, còn về tư liệu của FAT thì mình có đủ, cùng với 1 số source code mình đã viết (nói chung source còn gà lắm hi - nếu thít thì liên hệ qua mail mình nhé )


    Còn về NTFS bạn nào có tư liệu về các tổ chức của hệ thống này share mình với.

    PS: mình viết chương trình chủ yếu trên C++ nên vấn đề về absread, abswrite, biosdisk hiện giờ là vấn đề nan giải của mình không bít làm sao để đọc được trực tiếp ổ đĩa trên C++ (bác pro nào viết được absread, abswrite trên C++ ổn định share lên cho mọi người (và cả mình ) tìm hỉu với hjx

    Thân !


    Lưu ý: Đọc Nội quy trước khi gửi bài viết và không đưa thông tin cá nhân lên diễn đàn. (Nhắc nhở bởi Dreaminess)
    Đã được chỉnh sửa lần cuối bởi zZKiddyZz : 02-01-2008 lúc 12:35 PM.

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    21

    Project: DIR - RDET (file system FAT12)
    Form: C/C++

    Code:
    /* Liet ke thong tin file & folder o thu muc goc  */
    
    #include <dos.h>
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <alloc.h>
    
    #define NBYTES_FAT 9*512
    
    #define ATTR_READ_ONLY  0x01
    #define ATTR_HIDDEN     0x02
    #define ATTR_SYSTEM     0x04
    #define ATTR_VOLUME_ID  0x08
    #define ATTR_DIRECTORY  0x10
    #define ATTR_ARCHIVE    0x20
    #define ATTR_LONG_NAME  (ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID)
    #define ATTR_LONG_NAME_MASK (ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID | ATTR_DIRECTORY | ATTR_ARCHIVE)
    
    typedef unsigned char BYTE;
    typedef unsigned int WORD;
    typedef unsigned long DWORD;
    
    
    /* Struct time */
    typedef struct {
    	BYTE  Seconds : 5;
    	BYTE  Minutes : 6;
    	BYTE  Hours : 5;
    }Time;
    
    
    /* Struct date */
    typedef struct {
    	BYTE  Day : 5;
    	BYTE  Month : 4;
    	BYTE  Year: 7;
    }Date;
    
    
    /* Main Entry */
    typedef struct FatDir {
    	BYTE      Name[8];            // 0   File name, 8
    	BYTE      Ext[3];			  // 8   Extension, 3
    	BYTE      Attr;               // 11  File attributes. (00ARSHDV)
    	BYTE      NTRes;              // 12  Reserved for windows NT.
    	BYTE      CrtTimeTenth;       // 13  Creation time, tenths of a second, 0...199.
    	Time      CrtTime;            // 14  Creation time.
    	Date      CrtDate;            // 16  Creation date.
    	Date      LstAccDate;         // 18  Last access date.
    	WORD      FstClusHI;          // 20  First cluster number, high word.
    	Time      WrtTime;            // 22  Last write time.
    	Date	  WrtDate;            // 24  Last write date.
    	WORD      FstClusLO;          // 26  First cluster number, low word.
    	DWORD     FileSize;           // 28  File size in bytes.
    }Entry;
    
    
    /* Long File Name */
    struct FatLongNameDirStruct {
    	BYTE  Ord;                 // 0   Sequence number
    	BYTE  Name1[10];           // 1   Name characters (five UTF-16 characters)
    	BYTE  Attr;                // 11  Attribute, must be ATTR_LONG_NAME (0x0F)
    	BYTE  Type;                // 12  Reserved (always zero)
    	BYTE  Chksum;              // 13  Checksum
    	BYTE  Name2[12];           // 14  Name characters (six UTF-16 characters)
    	BYTE  FstClusLO[2];        // 26  Reserved (always zero)
    	BYTE  Name3[4];            // 28  Name characters (two UTF-16 characters)
    }LFN;
    
    
    void ScanRDET(Entry *RDET)
    {	
    	int i;
    	for(i = 0; i < 224; i++)
    		if((RDET[i].Name[0] != 0) && (RDET[i].Name[0] != 0xE5) && (RDET[i].Attr != 0x0F))
    		{	
    			//Ngay, gio tao tap tin, thu muc
    			printf("%2u/%2u/%2u  ", RDET[i].CrtDate.Month, RDET[i].CrtDate.Day, RDET[i].CrtDate.Year + 1980);
    			printf("%2u:%2u:%2u    ", RDET[i].CrtTime.Hours, RDET[i].CrtTime.Minutes, RDET[i].CrtTime.Seconds * 2);
    			
    			
    			//Thuoc tinh tap tin, thu muc
    			if((RDET[i].Attr & ATTR_DIRECTORY) == ATTR_DIRECTORY)
    				printf("<DIR>");
    			else
    			{
    				if ((RDET[i].Attr & ATTR_ARCHIVE)	== ATTR_ARCHIVE)	printf ("a"); else printf("-");
    				if ((RDET[i].Attr & ATTR_VOLUME_ID)	== ATTR_VOLUME_ID)	printf ("v"); else printf("-");
    				if ((RDET[i].Attr & ATTR_SYSTEM)	== ATTR_SYSTEM)		printf ("s"); else printf("-");
    				if ((RDET[i].Attr & ATTR_HIDDEN)	== ATTR_HIDDEN)		printf ("h"); else printf("-");
    				if ((RDET[i].Attr & ATTR_READ_ONLY)	== ATTR_READ_ONLY)	printf ("r"); else printf("-");
    			}
    
    
    			//Thuoc tinh la thu muc ko in kich thuoc
    			if(RDET[i].Attr != ATTR_DIRECTORY)
    				printf("\t%u\t", RDET[i].FileSize);
    			else
    				printf("\t\t");
    
    			//In ten va phan duoi
    			int j;
    			for(j = 0; j < 8; j++)
    			{
    				if(RDET[i].Name[j] != 32)
    					printf("%c", RDET[i].Name[j]);
    				else break;
    			}
    
    			if(RDET[i].Attr != ATTR_DIRECTORY)
    				printf(".");
    
    			for(j = 0; j < 3; j++)
    			{
    				if(RDET[i].Name[j] != 32)
    					printf("%c", RDET[i].Ext[j]);
    				else break;
    			}
    			printf("\n");
    		}
    }
    
    
    int main()
    {
    	clrscr();
    	Entry RDET[224];
    	
    	absread(0, 14, 19, &RDET);
    	ScanRDET(RDET);
    	getch();
    
    	return 0;                            
    }

  3. #3
    Ngày gia nhập
    04 2008
    Bài viết
    244

    PS: mình viết chương trình chủ yếu trên C++ nên vấn đề về absread, abswrite, biosdisk hiện giờ là vấn đề nan giải của mình không bít làm sao để đọc được trực tiếp ổ đĩa trên C++ (bác pro nào viết được absread, abswrite trên C++ ổn định share lên cho mọi người (và cả mình ) tìm hỉu với hjx
    hàm abswrite là hàm dùng để làm gì đấy ạ,anh có thể nêu rõ công dụng xem nào

Các đề tài tương tự

  1. lỗi the system cannot find the file specified
    Gửi bởi ptit.uth trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 07-11-2013, 08:23 PM
  2. Database chạy chương trình báo lỗi ở file System.Data.SqlClient
    Gửi bởi c100 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 16-05-2013, 02:51 PM
  3. Lỗi the system cannot find the file specified
    Gửi bởi khanhtran88 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 09-01-2013, 11:00 AM
  4. Lỗi The system cannot find the file specified khi sử dụng Qt add in VS 2008
    Gửi bởi haian trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 1
    Bài viết cuối: 20-03-2011, 12:22 AM
  5. API hàm SetFileAttributes đặt thuộc tính System cho file
    Gửi bởi honey trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 11-10-2008, 09:36 AM

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