本文整理汇总了C++中BDirectory::CreateFile方法的典型用法代码示例。如果您正苦于以下问题:C++ BDirectory::CreateFile方法的具体用法?C++ BDirectory::CreateFile怎么用?C++ BDirectory::CreateFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BDirectory
的用法示例。
在下文中一共展示了BDirectory::CreateFile方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
bool
DialUpView::SaveSettingsToFile()
{
bool settingsChanged, profileChanged;
IsModified(&settingsChanged, &profileChanged);
if(!settingsChanged && !profileChanged)
return true;
BMessage settings, profile;
if(!SaveSettings(&settings, &profile, false))
return false;
BDirectory settingsDirectory;
BDirectory profileDirectory;
GetPPPDirectories(&settingsDirectory, &profileDirectory);
if(settingsDirectory.InitCheck() != B_OK || profileDirectory.InitCheck() != B_OK)
return false;
BFile file;
if(settingsChanged) {
settingsDirectory.CreateFile(fCurrentItem->Label(), &file);
WriteMessageDriverSettings(file, settings);
}
if(profileChanged) {
profileDirectory.CreateFile(fCurrentItem->Label(), &file);
WriteMessageDriverSettings(file, profile);
}
return true;
}
示例2:
int32_t
PDirectoryCreateFile(void *pobject, void *in, void *out, void *extraData)
{
if (!pobject || !in || !out)
return B_ERROR;
PDirectory *parent = static_cast<PDirectory*>(pobject);
if (!parent)
return B_BAD_TYPE;
BDirectory *backend = (BDirectory*)parent->GetBackend();
PArgs *args = static_cast<PArgs*>(in), *outArgs = static_cast<PArgs*>(out);
BString path;
if (args->FindString("path", &path) != B_OK)
return B_ERROR;
bool dontClobber = false;
if (args->FindBool("dontclobber", &dontClobber) != B_OK)
return B_ERROR;
BFile newFile;
status_t status = backend->CreateFile(path.String(), &newFile,
dontClobber);
outArgs->MakeEmpty();
outArgs->AddInt32("status", status);
return B_OK;
}
示例3: OpenWorksheet
PDoc* PApp::OpenWorksheet()
{
try
{
if (!gPrefsDir.Contains("Worksheet", B_FILE_NODE | B_SYMLINK_NODE))
{
BFile file;
gPrefsDir.CreateFile("Worksheet", &file);
}
BEntry w;
entry_ref wr;
FailOSErr(gPrefsDir.FindEntry("Worksheet", &w, true));
FailOSErr(w.GetRef(&wr));
OpenWindow(wr);
PDoc *d = dynamic_cast<PDoc*>(CDoc::FindDoc(wr));
if (d)
d->MakeWorksheet();
return d;
}
catch (HErr& e)
{
e.DoError();
}
return NULL;
} /* PApp::OpenWorksheet */
示例4: tosave
status_t
ThemeManager::SaveTheme(int32 id, bool excl)
{
FENTRY;
status_t err;
BString name, fname;
BPath path;
BDirectory dir;
BDirectory tdir;
BFile tfile;
BMessage names;
BString location;
BMessage *theme;
theme = ThemeAt(id);
if (!theme)
return EINVAL;
err = find_directory(B_USER_SETTINGS_DIRECTORY, &path);
if (err) return err;
path.Append(Z_THEMES_FOLDER_NAME);
err = dir.SetTo(path.Path());
if (err) return err;
err = ThemeName(id, name);
if (err) return err;
fname = name;
NormalizeThemeFolderName(fname);
err = ThemeLocation(id, location);
if (!err) {
if (location.FindFirst("/boot/beos") >= 0) {
PRINT(("trying to save theme '%s' to system dir!\n", name.String()));
return B_PERMISSION_DENIED;
}
}
path.Append(fname.String());
err = theme->ReplaceString(Z_THEME_LOCATION, path.Path());
if (err)
err = theme->AddString(Z_THEME_LOCATION, path.Path());
if (dir.CreateDirectory(fname.String(), NULL) < B_OK) {
if (excl)
return B_FILE_EXISTS;
}
err = tdir.SetTo(&dir, fname.String());
if (err) return err;
err = tdir.CreateFile(Z_THEME_FILE_NAME, &tfile);
if (err) return err;
BMessage tosave(*theme);
err = tosave.RemoveName(Z_THEME_LOCATION);
err = GetNames(names);
err = DumpMessageToStream(&tosave, tfile, 0, &names);
if (err) return err;
return B_OK;
}
示例5: TaskToFile
status_t TaskFS::TaskToFile(Task *theTask, bool overwrite)
{
BFile taskFile;
BEntry entry;
status_t err;
TaskList *tskLst = theTask->GetTaskList();
BDirectory dir = BDirectory();
bool completed = theTask->IsCompleted();
uint32 priority = theTask->Priority();
time_t due = theTask->DueTime();
//first find directory.. then create files in this directory
if (tskLst!=NULL)
dir.SetTo(&tasksDir,tskLst->Name());
else
dir.SetTo(&tasksDir,".");
//first check if the File already exists..
//if not and overwrite is on check the ids..
// and search for the correspondending file...
if (dir.FindEntry(theTask->Title(),&entry) == B_OK) {
taskFile.SetTo((const BEntry*)&entry,B_READ_WRITE);
err = B_OK;
}
else {
entry_ref *ref= FileForId(theTask);
if (ref==NULL){
dir.CreateFile(theTask->Title(),&taskFile,overwrite);
dir.FindEntry(theTask->Title(),&entry);
}
else {
entry.SetTo(ref);
taskFile.SetTo((const BEntry*)ref,B_READ_WRITE);
}
}
if (taskFile.InitCheck() == B_OK){
taskFile.WriteAttr("META:completed",B_BOOL_TYPE, 0, &completed, sizeof(completed));
entry.Rename(theTask->Title());
taskFile.WriteAttrString("META:tasks",new BString(theTask->GetTaskList()->ID()));
taskFile.WriteAttrString("META:notes",new BString(theTask->Notes()));
taskFile.WriteAttr("META:priority", B_UINT32_TYPE, 0, &priority, sizeof(priority));
taskFile.WriteAttr("META:due", B_TIME_TYPE, 0, &due, sizeof(due));
taskFile.WriteAttrString("META:task_id", new BString(theTask->ID()));
taskFile.WriteAttrString("META:task_url",new BString(theTask->URL()));
}
else
err=B_ERROR;
return err;
}
示例6: bm
CMimeItem::CMimeItem(const char *mime)
{
fMime.SetTo(mime);
memset(fIcon, B_TRANSPARENT_8_BIT, 256);
memset(fIconSelected, B_TRANSPARENT_8_BIT, 256);
BBitmap bm(BRect(0, 0, 15, 15), B_COLOR_8_BIT);
if (fMime.GetIcon(&bm, B_MINI_ICON) != B_OK)
{
try
{
char p[PATH_MAX];
if (find_directory(B_SYSTEM_TEMP_DIRECTORY, 0, true, p, PATH_MAX) == B_OK)
{
BDirectory tmpdir;
FailOSErr(tmpdir.SetTo(p));
time_t t;
time(&t);
sprintf(p, "tmp.pe_is_looking_for_a_mime_icon:%ld", t);
BFile f;
FailOSErr(tmpdir.CreateFile(p, &f));
BNodeInfo ni;
FailOSErr(ni.SetTo(&f));
FailOSErr(ni.SetType(mime));
FailOSErr(ni.GetTrackerIcon(&bm, B_MINI_ICON));
}
}
catch (HErr& e) { }
}
for (int i = 0; i < 16; i++)
{
unsigned char *ba = (unsigned char *)((unsigned char *)bm.Bits() + bm.BytesPerRow() * i);
memcpy(fIcon + i * 16, ba, 16);
for (int j = 0; j < 16; j++)
if (ba[j] < 255)
fIconSelected[j + i * 16] = gSelectedMap[ba[j]];
}
} /* CMimeItem::CMimeItem */
示例7: MessageReceived
/*! \brief Main function of the class.
* \param[in] in BMessage to respond to.
*/
void EventEditorMainWindow::MessageReceived( BMessage *in )
{
BView* view;
BEntry entry;
BFile file;
BString tempString;
BDirectory directory;
BMessage saveMessage( kSaveRequested );
entry_ref ref;
switch( in->what )
{
case B_SELECT_ALL:
case B_COPY:
case B_CUT:
case B_PASTE:
case B_UNDO:
view = CurrentFocus();
if ( view )
view->MessageReceived( in );
break;
case kFileOpen:
fOpenFile->Show();
break;
case kFileSaveAs:
fSaveFile->Show();
break;
case kFileRevert: // Intentional fall-through
case kFileOpenConfirmed:
if ( in->what == kFileRevert ) {
if ( fData.GetRef() != NULL )
{
// ...Prepare it for usage
ref = *( fData.GetRef() );
} else {
// Ask the user what to do
fOpenFile->Show();
break;
}
} else {
if ( B_OK != in->FindRef( "refs", &ref ) ||
B_OK != entry.SetTo( &ref, true ) ||
B_OK != entry.GetRef( &ref ) )
{
entry.Unset();
break;
}
}
fData.InitFromFile( ref );
if ( Looper()->Lock() ) {
// fData.Revert();
MainView->RemoveSelf();
delete MainView;
InitUI();
Looper()->Unlock();
}
entry.Unset();
break;
case kFileSave: // Intentional fall-through
case kFileSaveConfirmed:
// Save user's changes
if ( genView ) genView->MessageReceived( &saveMessage );
if ( remView ) remView->MessageReceived( &saveMessage );
if ( actView ) actView->SaveData();
if ( noteView ) noteView->SaveText();
fData.SetEventActivityFired( false );
fData.SetReminderActivityFired( false );
// If we have the reference to file...
if ( in->what == kFileSave ) {
if ( fData.GetRef() != NULL )
{
// ...Prepare it for usage
ref = *( fData.GetRef() );
} else {
// Ask the user what to do
fSaveFile->Show();
break;
}
} else {
if ( B_OK != in->FindRef( "directory", &ref ) ||
B_OK != in->FindString( "name", &tempString ) ||
B_OK != directory.SetTo( &ref ) ||
B_OK != directory.CreateFile( tempString.String(), NULL, false ) ||
B_OK != directory.FindEntry( tempString.String(), &entry, true ) ||
B_OK != entry.GetRef( &ref ) )
{
break;
}
//.........这里部分代码省略.........
示例8: close
void
TStatusWindow::MessageReceived(BMessage* msg)
{
switch (msg->what) {
case STATUS:
break;
case OK:
{
if (!_Exists(fStatus->Text())) {
int32 index = 0;
uint32 loop;
status_t result;
BDirectory dir;
BEntry entry;
BFile file;
BNodeInfo* node;
BPath path;
find_directory(B_USER_SETTINGS_DIRECTORY, &path, true);
dir.SetTo(path.Path());
if (dir.FindEntry("Mail", &entry) == B_NO_ERROR)
dir.SetTo(&entry);
else
dir.CreateDirectory("Mail", &dir);
if (dir.InitCheck() != B_NO_ERROR)
goto err_exit;
if (dir.FindEntry("status", &entry) == B_NO_ERROR)
dir.SetTo(&entry);
else
dir.CreateDirectory("status", &dir);
if (dir.InitCheck() == B_NO_ERROR) {
char name[B_FILE_NAME_LENGTH];
char newName[B_FILE_NAME_LENGTH];
sprintf(name, "%s", fStatus->Text());
if (strlen(name) > B_FILE_NAME_LENGTH - 10)
name[B_FILE_NAME_LENGTH - 10] = 0;
for (loop = 0; loop < strlen(name); loop++) {
if (name[loop] == '/')
name[loop] = '\\';
}
strcpy(newName, name);
while (1) {
if ((result = dir.CreateFile(newName, &file, true)) == B_NO_ERROR)
break;
if (result != EEXIST)
goto err_exit;
sprintf(newName, "%s_%" B_PRId32, name, index++);
}
dir.FindEntry(newName, &entry);
node = new BNodeInfo(&file);
node->SetType("text/plain");
delete node;
file.Write(fStatus->Text(), strlen(fStatus->Text()) + 1);
file.SetSize(file.Position());
file.WriteAttr(INDEX_STATUS, B_STRING_TYPE, 0, fStatus->Text(),
strlen(fStatus->Text()) + 1);
}
}
err_exit:
{
BMessage close(M_CLOSE_CUSTOM);
close.AddString("status", fStatus->Text());
fTarget.SendMessage(&close);
// will fall through
}
}
case CANCEL:
Quit();
break;
}
}
示例9: BFile
void
TSignatureWindow::Save()
{
char name[B_FILE_NAME_LENGTH];
int32 index = 0;
status_t result;
BDirectory dir;
BEntry entry;
BNodeInfo *node;
BPath path;
if (!fFile) {
find_directory(B_USER_SETTINGS_DIRECTORY, &path, true);
dir.SetTo(path.Path());
if (dir.FindEntry("bemail", &entry) == B_NO_ERROR)
dir.SetTo(&entry);
else
dir.CreateDirectory("bemail", &dir);
if (dir.InitCheck() != B_NO_ERROR)
goto err_exit;
if (dir.FindEntry("signatures", &entry) == B_NO_ERROR)
dir.SetTo(&entry);
else
dir.CreateDirectory("signatures", &dir);
if (dir.InitCheck() != B_NO_ERROR)
goto err_exit;
fFile = new BFile();
while(true) {
sprintf(name, "signature_%ld", index++);
if ((result = dir.CreateFile(name, fFile, true)) == B_NO_ERROR)
break;
if (result != EEXIST)
goto err_exit;
}
dir.FindEntry(name, &fEntry);
node = new BNodeInfo(fFile);
node->SetType("text/plain");
delete node;
}
fSigView->fTextView->fDirty = false;
fFile->Seek(0, 0);
fFile->Write(fSigView->fTextView->Text(),
fSigView->fTextView->TextLength());
fFile->SetSize(fFile->Position());
fFile->WriteAttr(INDEX_SIGNATURE, B_STRING_TYPE, 0, fSigView->fName->Text(),
strlen(fSigView->fName->Text()) + 1);
return;
err_exit:
beep();
(new BAlert("", MDR_DIALECT_CHOICE (
"An error occurred trying to save this signature.",
"署名を保存しようとした時にエラーが発生しました。"),
MDR_DIALECT_CHOICE ("Sorry","了解")))->Go();
}
示例10: volume
void
PersonWindow::MessageReceived(BMessage* msg)
{
msg->PrintToStream();
char str[256];
BDirectory directory;
BEntry entry;
BFile file;
// BNodeInfo *node;
switch (msg->what) {
case M_SAVE:
if (!fRef) {
SaveAs();
break;
}
// supposed to fall through
case M_REVERT:
case M_SELECT:
fView->MessageReceived(msg);
break;
case M_SAVE_AS:
int32 format;
if (msg->FindInt32("format", &format) == B_OK)
SaveAs(format);
break;
case M_ADD_FIELD:
case M_SHOW_LOCATIONS:
case M_SHOW_GROUPS:
fView->MessageReceived(msg);
break;
case B_UNDO: // fall through
case B_CUT:
case B_COPY:
case B_PASTE:
{
BView* view = CurrentFocus();
if (view != NULL)
view->MessageReceived(msg);
break;
}
case B_SAVE_REQUESTED:
{
entry_ref dir;
if (msg->FindRef("directory", &dir) == B_OK) {
const char* name = NULL;
msg->FindString("name", &name);
directory.SetTo(&dir);
if (directory.InitCheck() == B_NO_ERROR) {
directory.CreateFile(name, &file);
if (file.InitCheck() == B_NO_ERROR) {
int32 format;
if (msg->FindInt32("format", &format) == B_OK) {
directory.FindEntry(name, &entry);
entry.GetRef(&dir);
_SetToRef(new entry_ref(dir));
SetTitle(fRef->name);
fView->CreateFile(fRef, format);
}
}
else {
sprintf(str, B_TRANSLATE("Could not create %s."), name);
(new BAlert("", str, B_TRANSLATE("Sorry")))->Go();
}
}
}
break;
}
case B_CONTACT_REMOVED:
// We lost our file. Close the window.
PostMessage(B_QUIT_REQUESTED);
break;
case B_CONTACT_MOVED:
{
// We may have renamed our entry. Obtain relevant data
// from message.
BString name;
msg->FindString("name", &name);
int64 directory;
msg->FindInt64("to directory", &directory);
int32 device;
msg->FindInt32("device", &device);
// Update our file
fRef = new entry_ref(device,
directory, name.String());
fWatcher->SetRef(fRef);
fView->Reload(fRef);
// And our window title.
SetTitle(name);
// If moved to Trash, close window.
//.........这里部分代码省略.........
示例11: MessageReceived
//.........这里部分代码省略.........
ni.GetType(type);
if (!strcmp(type, "account/x-TMS-BMC"))
theProxy->BMCImport(curAcc, &entry);
else
try
{
Window()->Lock();
theProxy->Import(curAcc, &entry);
Window()->Unlock();
}
catch (invalid_argument)
{
BAlert* alert = new BAlert("Import Warning",
"File Could not be Imported", "OK");
alert->Go();
}
delete[] type;
}
break;
case ExportMSG:
{
BDirectory directory;
BFile file;
BEntry entry;
entry_ref dir;
const char* name;
if (message->FindRef("directory", &dir) != B_OK)
break;
if (message->FindString("name", &name) != B_OK)
break;
directory.SetTo(&dir);
if (directory.InitCheck() == B_NO_ERROR)
{
directory.CreateFile(name, &file);
if (file.InitCheck() == B_NO_ERROR)
{
directory.FindEntry(name, &entry);
theProxy->Export(curAcc, &entry);
}
}
}
break;
case AccSetMSG:
case SettingsMSG:
{
AccSettingsWindow* asw = new AccSettingsWindow(curAcc, this, theProxy->GetPrefs());
asw->Show();
}
break;
case ManPyeMSG:
{
if (!pmw)
pmw = new PyeManagerWindow(this, theProxy);
pmw->Show();
}
break;
case ManCatMSG:
{
if (!cmw)
cmw = new CatManagerWindow(this, theProxy);
cmw->Show();
}
break;
case PyeManagerWindowExitMSG:
pmw = 0;
break;
示例12: volume
void
PersonWindow::MessageReceived(BMessage* msg)
{
char str[256];
BDirectory directory;
BEntry entry;
BFile file;
BNodeInfo *node;
switch (msg->what) {
case M_SAVE:
if (!fRef) {
SaveAs();
break;
}
// supposed to fall through
case M_REVERT:
case M_SELECT:
fView->MessageReceived(msg);
break;
case M_SAVE_AS:
SaveAs();
break;
case B_UNDO: // fall through
case B_CUT:
case B_COPY:
case B_PASTE:
{
BView* view = CurrentFocus();
if (view != NULL)
view->MessageReceived(msg);
break;
}
case B_SAVE_REQUESTED:
{
entry_ref dir;
if (msg->FindRef("directory", &dir) == B_OK) {
const char* name = NULL;
msg->FindString("name", &name);
directory.SetTo(&dir);
if (directory.InitCheck() == B_NO_ERROR) {
directory.CreateFile(name, &file);
if (file.InitCheck() == B_NO_ERROR) {
node = new BNodeInfo(&file);
node->SetType("application/x-person");
delete node;
directory.FindEntry(name, &entry);
entry.GetRef(&dir);
_SetToRef(new entry_ref(dir));
SetTitle(fRef->name);
fView->CreateFile(fRef);
}
else {
sprintf(str, B_TRANSLATE("Could not create %s."), name);
BAlert* alert = new BAlert("", str, B_TRANSLATE("Sorry"));
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
alert->Go();
}
}
}
break;
}
case B_NODE_MONITOR:
{
int32 opcode;
if (msg->FindInt32("opcode", &opcode) == B_OK) {
switch (opcode) {
case B_ENTRY_REMOVED:
// We lost our file. Close the window.
PostMessage(B_QUIT_REQUESTED);
break;
case B_ENTRY_MOVED:
{
// We may have renamed our entry. Obtain relevant data
// from message.
BString name;
msg->FindString("name", &name);
int64 directory;
msg->FindInt64("to directory", &directory);
int32 device;
msg->FindInt32("device", &device);
// Update our ref.
delete fRef;
fRef = new entry_ref(device, directory, name.String());
// And our window title.
SetTitle(name);
// If moved to Trash, close window.
BVolume volume(device);
BPath trash;
//.........这里部分代码省略.........
示例13: main
int main(int argc, char *argv[])
{
yyin = stdin;
int i = getoptions(argc, argv);
char buf[PATH_MAX];
if (out[0] == '/')
strcpy(buf, out);
else
{
getcwd(buf, PATH_MAX);
strcat(buf, "/");
strcat(buf, out);
}
BEntry e;
if (e.SetTo(out)) error("entry set to %s", out);
BDirectory d;
if (e.GetParent(&d)) error("get parent of %s", out);
if ((gTruncate || gSaveAsHeader) && e.Exists() && e.Remove())
error("removing %s", out);
BFile f;
BResources res;
if (!gDump)
{
if (gTruncate || !e.Exists())
{
if (d.CreateFile(buf, &f)) error("creating %s", buf);
gTruncate = true;
}
else
if (f.SetTo(buf, B_READ_WRITE)) error("opening %s", buf);
if (gSaveAsHeader)
{
gHeader = fopen(buf, "w");
if (!gHeader) error("Error creating %s", buf);
}
else if (res.SetTo(&f, gTruncate) != B_NO_ERROR)
error("opening resource file %s", buf);
}
resFile = &res;
if (i == argc)
Work(NULL);
else
{
while (i < argc)
Work(in = argv[i++]);
}
if (verbose)
puts("done");
if (gHeader)
fclose(gHeader);
else
f.Sync();
return 0;
} /* main */
示例14: RefsReceived
//.........这里部分代码省略.........
}
Pool.sample_view_dirty = true; // update the sample-view
Pool.update_draw_cache = true; // update the draw cache
Pool.update_index = true; // update the draw cache
Pool.update_peak = true;
Pool.RedrawWindow();
Pool.InitBufferPlayer( Pool.frequency );
play_cookie.pause = temp_pause;
Pool.UpdateMenu();
mainWindow->UpdateRecent();
// be_app->Unlock();
}
//------------------------------------------------------------------ Save
void MyApplication::Save(BMessage *message){
// Grab the stuff we know is there .. or should be :P
entry_ref dir_ref, file_ref;
const char *name;
BFile newFile;
BDirectory dir;
float t;
if ((message->FindRef("directory", &dir_ref) == B_OK)
&& (message->FindString("name", &name) == B_OK))
{
dir.SetTo(&dir_ref);
if (dir.InitCheck() != B_OK)
return;
dir.CreateFile(name, &newFile);
BEntry entry(&dir, name);
if (entry.InitCheck() != B_OK) {
(new BAlert(NULL, Language.get("CANT_OVERWRITE_FILE"), Language.get("OK")))->Go();
return;
}
entry.GetRef(&file_ref);
media_codec_info *audioCodec;
media_file_format *fileFormat;
media_raw_audio_format *raf(NULL), *raf_in(NULL);
media_format format;
memset(&format, 0, sizeof(format));
char *buffer(NULL);
int32 frame_size(1);
fSavePanel->GetSelectedFormatInfo(&fileFormat, &audioCodec);
if (audioCodec != NULL){
// format = Pool.m_format;
memcpy(&format, &Pool.m_format, sizeof(format));
raf_in = &(format.u.raw_audio);
format.type = B_MEDIA_RAW_AUDIO;
if (raf_in->format == 1) raf_in->format = 0x11;
// create media file
BMediaFile file(&file_ref, fileFormat, B_MEDIA_FILE_REPLACE_MODE);
if (file.InitCheck() != B_OK){
(new BAlert(NULL, Language.get("CANT_OVERWRITE_FILE"), Language.get("OK")))->Go();
return;