{
public:
explicit QtTAR (void) ;
virtual ~QtTAR (void) ;
virtual int BlockSize (void) const ;
virtual bool isBlock (QByteArray & block) ;
virtual bool isPadding (QByteArray & block) ;
virtual qint64 FileBlocks (qint64 size) ;
virtual int Checksum (QByteArray & block,char replace = ' ') ;
virtual bool Extract (QByteArray & block ,void * hiddenFileInfo) ; // block => File
virtual bool Bale (void * hiddenFileInfo,QByteArray & data ) ; // File <= Data
protected:
QString toOct (int checksum) ;
void PackOct (char * buf,qint64 size,int length) ;
qint64 FromOct (char * buf,int length) ;
private:
void Copy (char * buf,QString string) ;
} ;
int BlockSize(void) const
bool isBlock(QByteArray & block)
bool isPadding(QByteArray & block)
检查是否为填空封包。
qint64 FileBlocks(qint64 size)
int Checksum(QByteArray & block,char replace = ' ')
计算TAR封包512位元组的Checksum值。
bool Extract(QByteArray & block,void * hiddenFileInfo)
bool Bale(void * hiddenFileInfo,QByteArray & data)
将文件记录资讯封装为TAR封包数据。
QString toOct(int checksum)
void PackOct(char * buf,qint64 size,int length)
qint64 FromOct(char * buf,int length)
将buf以八进位格式转换成qint64。
void Copy(char * buf,QString string)
将string字串複製到buf当中。
class QtTarBall : public QtTAR
{
public:
explicit QtTarBall (void) ;
virtual ~QtTarBall (void) ;
virtual bool List (QDir root,QIODevice & IO) ;
virtual bool List (QDir root,QString filename) ;
virtual bool Extract (QDir root,QIODevice & IO) ;
virtual bool Extract (QDir root,QString filename) ;
virtual bool TarBall (QIODevice & IO,QDir root,QDir source,bool recursive = true) ;
virtual bool TarBall (QString filename,QDir root,QDir source,bool recursive = true) ;
protected:
virtual bool Interval (void) ;
virtual void Report (void * hiddenFileInfo) ;
virtual bool ListFile (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool Extract (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool Read (QIODevice & IO,QByteArray & data,qint64 size) ;
virtual bool Skip (QIODevice & IO,qint64 size) ;
virtual bool Write (QIODevice & IO,QByteArray & data) ;
virtual bool WriteClose (QIODevice & IO) ;
virtual bool WriteFile (QIODevice & IO,QFileInfo & file) ;
virtual bool ExtractFile (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool ExtractDir (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool ExtractLink (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool ExtractDEVs (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool ExtractNext (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool ExtractEXT (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool setFileTime (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual bool setFileMode (QDir root,QIODevice & IO,void * hiddenFileInfo) ;
virtual QFileInfoList Listing (QDir & root,QDir source) ;
virtual bool WriteTAR (QIODevice & IO,QDir & root,QFileInfo & file) ;
virtual bool ToHiddenFileInfo (QDir & root,QFileInfo & file,void * hiddenFileInfo) ;
virtual void * NewHiddenFile (void) ;
virtual void CleanHiddenFile (void * hiddenFileInfo) ;
private:
} ;
bool List(QDir root,QIODevice & IO)
bool List(QDir root,QString filename)
对TAR档file文件的内部包含文件进行列表。
bool Extract(QDir root,QIODevice & IO)
bool Extract(QDir root,QString filename)
对TAR档file文件的内部包含文件进行解开。
bool TarBall(QIODevice & IO,QDir root,QDir source,bool recursive = true)
bool TarBall(QString filename,QDir root,QDir source,bool recursive = true)
将目录source当中的所有文件进行TAR档filename文件执行封装。
bool Interval(void)
void Report(void * hiddenFileInfo)
报告文件记录资讯。这个函式仅在对TAR进行ListFile文件列表时被呼叫。内定没有做任何事,您需要继承这个函式来列出文件资讯。
bool ListFile(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool Extract(QDir root,QIODevice & IO,void * hiddenFileInfo)
由IO文件中,抽取hiddenFileInfo文件,并且分配相对应的处理方式。
bool Read(QIODevice & IO,QByteArray & data,qint64 size)
bool Skip(QIODevice & IO,qint64 size)
bool Write(QIODevice & IO,QByteArray & data)
bool WriteClose(QIODevice & IO)
bool WriteFile(QIODevice & IO,QFileInfo & file)
将文件file写入IO文件中,一般是读取硬碟中的文件写入TAR文件中。
bool ExtractFile(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool ExtractDir(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool ExtractLink(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool ExtractDEVs(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool ExtractNext(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool ExtractEXT(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool setFileTime(QDir root,QIODevice & IO,void * hiddenFileInfo)
bool setFileMode(QDir root,QIODevice & IO,void * hiddenFileInfo)
设定文件的存取权限等相关资讯。
QFileInfoList Listing(QDir & root,QDir source)
bool WriteTAR(QIODevice & IO,QDir & root,QFileInfo & file)
bool ToHiddenFileInfo(QDir & root,QFileInfo & file,void * hiddenFileInfo)
将QFileInfo转换成文件记录资讯。
void * NewHiddenFile(void)
void CleanHiddenFile(void * hiddenFileInfo)
清除文件记录资讯。
名称 |
值 |
涵意 |
None |
0 |
无。 |
Regular |
1 |
正常文件。 |
Link |
2 |
Symbolic link文件。 |
Symbol |
3 |
Symbol设备档。 |
Char |
4 |
Char设备档。 |
Block |
5 |
Block设备档。 |
Directory |
6 |
目录。 |
FIFO |
7 |
FIFO设备档。 |
Reserved |
8 |
保留使用。 |
Next |
9 |
S-TAR的下个封包记号。 |
Extended |
10 |
S-TAR Extended封包。 |
bool Archive ; /* inside a Tar file or Zip file, and so on */
QString Root ; /* Root directory or tarball name */
QString Filename ; /* Filename or directory name of this entry */
QString System ; /* Normally, this is operation system */
qint64 mode ; /* Unix only */
qint64 uid ; /* Unix only */
qint64 gid ; /* Unix only */
qint64 size ; /* File size, for directory, it is 0 */
QDateTime Time ; /* Creation time */
QDateTime Lastest ; /* Last modified */
QString CheckSum ; /* CheckSum of this file */
HiddenFileTypes Type ; /* File Type */
QString LinkName ; /* Unix only */
QString uname ; /* Unix only */
QString gname ; /* Unix only */
qint64 Major ; /* Unix only */
qint64 Minor ; /* Unix only */
QString Prefix ; /* Normally, this is prefix directory */
QString Comment ; /* This is from GZIP format, however, sometimes it is useful */
} HiddenFileInfo ;