本文整理汇总了C++中BFile::GetNextAttrName方法的典型用法代码示例。如果您正苦于以下问题:C++ BFile::GetNextAttrName方法的具体用法?C++ BFile::GetNextAttrName怎么用?C++ BFile::GetNextAttrName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BFile
的用法示例。
在下文中一共展示了BFile::GetNextAttrName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CopyFile
//---------------------------------------------------------------
// Copy File, not only data but also attributes ;-)
//---------------------------------------------------------------
void TJerFile::CopyFile( const char *sourcepath, const char *destinationpath )
{
BFile *source = 0L, *destination = 0L;
entry_ref ref;
uint8 data[2048];
int32 len = 2048;
char buf[B_ATTR_NAME_LENGTH];
void *buffer = NULL;
int32 lengthR,lengthW;
attr_info attribute;
BEntry entry( sourcepath );
if( B_OK == entry.InitCheck() )
{
if( B_OK == entry.GetRef( &ref ) )
{
source = new BFile( &ref ,B_READ_ONLY);
}
else
{
string truc("Error opening file in read only mode: ");
truc = truc + sourcepath;
GeneralException excep(truc.c_str(),"BJerFile::CopyFile");
throw(excep);
}
}
else
{
string truc("Error constructing file object: ");
truc = truc + sourcepath;
GeneralException excep(truc.c_str(),"BJerFile::CopyFile");
throw(excep);
}
entry.SetTo( destinationpath );
if( B_OK == entry.InitCheck() )
{
if( B_OK == entry.GetRef( &ref ) )
{
destination = new BFile( &ref ,B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE);
}
else
{
string truc("Error opening file in read write mode: ");
truc = truc + destinationpath;
GeneralException excep(truc.c_str(),"BJerFile::CopyFile");
throw(excep);
}
}
else
{
string truc("Error destination constructing file object: ");
truc = truc + destinationpath;
GeneralException excep(truc.c_str(),"BJerFile::CopyFile");
throw(excep);
}
if( source && destination )
{
BMessage *AMessage;
AMessage = new BMessage(B_UPDATE_STATUS_BAR);
AMessage->AddFloat("delta",1.0);
AMessage->AddString("text","Copy...");
AMessage->AddString("trailingtext",destinationpath);
MyInvoker.Invoke(AMessage);
delete AMessage;
while (source->GetNextAttrName(buf) == B_NO_ERROR)
{
source->GetAttrInfo(buf,&attribute);
if (buffer!=NULL)
{
free(buffer);
}
buffer = (void *)malloc(sizeof(char)*(attribute.size +1));
lengthR = source->ReadAttr(buf,attribute.type,0,buffer,attribute.size);
lengthW = destination->WriteAttr(buf,attribute.type,0,buffer,lengthR);
if (lengthR!=lengthW)
{
string truc("Error copying attribute for file : ");
truc = truc + destinationpath;
GeneralException excep(truc.c_str(),"BJerFile::CopyFile");
throw(excep);
}
switch(lengthR)
{
case B_ENTRY_NOT_FOUND:
{
GeneralException excep("The attribute doesn't exist.","BJerFile::CopyFile");
throw(excep);
break;
}
case B_FILE_ERROR :
{
GeneralException excep2("The object is uninitialized.","BJerFile::CopyFile");
//.........这里部分代码省略.........