Проверьте, что файл уже существует в диалоговом окне «Сохранить как» - c ++, opencascade - PullRequest
0 голосов
/ 15 июля 2011

Я хочу создать файл .stl для конкретной фигуры, где каждая грань этой фигуры имеет свое имя патча, например face1, face 2 и т. Д. Я сделал это путем переопределения классов StlAPI_Writer и RWStl в opencascade. Для этого я использовал метод file.Append вместо file.Build. Но у меня есть проблема, когда я сохраняю файл .stl в уже существующем файле, он добавляет данные к существующему, что неверно. Я хочу удалить существующие данные в файле и добавить новые данные лицом к лицу для заданной фигуры.

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 15 июля 2011

Вы можете использовать эту простую функцию:

#include <sys/stat.h>
#include <string>

using namespace std;    

bool FileExists(string strFilename) {
  struct stat stFileInfo;
  bool blnReturn;
  int intStat;

  // Attempt to get the file attributes
  intStat = stat(strFilename.c_str(),&stFileInfo);
  if(intStat == 0) {
    // We were able to get the file attributes
    // so the file obviously exists.
    blnReturn = true;
  } else {
    // We were not able to get the file attributes.
    // This may mean that we don't have permission to
    // access the folder which contains this file. If you
    // need to do that level of checking, lookup the
    // return values of stat which will give you
    // more details on why stat failed.
    blnReturn = false;
  }

  return(blnReturn);
}

Я предполагаю, что вы используете SaveFileDialogue класс.В этом случае вы можете обработать возвращаемый результат диалога следующим образом:

  if ( saveFileDialog.ShowDialog() == ::DialogResult::OK )  {
     if ( FileExist(saveFileDialog.FileName) )  {
        // erase the file
     }
     // write the code using the Append function
  }

Это должно работать, однако более простой вариант должен быть доступен, если вы используете что-то другое, кроме Append (что-то вроде Write или, возможно, даже Appendно с параметром, который указывает перезаписать файл)

HTH, JP

...