saveFileDialogクラスを使ってファイルを保存しているプログラムがあります。
このクラスを使うとファイルを保存したいパスを取得し保存しますよね?
このとき最後のファイル名になる部分だけを取り出せないでしょうか?
C:~~\data\test.txtだったらtest.txtだけとりたいです。
また保存するとき実行場所にフォルダを作りたいのですが
フォルダをあらかじめ作ってあげないとエラーが起こります。
String^ path = System::Windows::Forms::Application::StartupPath;
path = System::IO::Path::Combine(path, String::Format("Save"));
path = System::IO::Path::Combine(path, String::Format("aaa.txt");
System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter~
こう書かずに
+= \Save\aaa.txt
とかくと起動はできるのですが同じくエラーが起こります。
この2点を改善したいです。
VC++について
-
バグ
Re:VC++について
>>ファイル名の取得
System::IO::Path::GetFineName
>>フォルダをあらかじめ作ってあげないとエラーが起こります。
存在しない場所を参照しようとすれば当然です。
System::IO::Path::GetFineName
>>フォルダをあらかじめ作ってあげないとエラーが起こります。
存在しない場所を参照しようとすれば当然です。
// アプリケーションのある位置のパスを取得する
String^ path = System::Windows::Forms::Application::StartupPath;
// Saveディレクトリのパスを作成する
path = System::IO::Path::Combine(path, String::Format("Save"));
// Saveディレクトリの存在の有無を確認する
if (System::IO::Directory::Exists(path) == false)
{
// Saveディレクトリが存在しないので、作成する
System::IO::Directory::CreateDirectory(path);
}
// aaa.txtファイルのパスを作成する
path = System::IO::Path::Combine(path, String::Format("aaa.txt"));
// aaa.txtファイルのストリームを開く(存在しない場合は作成してから開く)
System::IO::FileStream^ fs = gcnew System::IO::FileStream(path, System::IO::FileMode::OpenOrCreate);
// aaa.txtファイルのストリームへ書き込むストリームライタークラスの生成
System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter(fs);
// 試し書き&後始末
sw->WriteLine("test1");
sw->Close();
fs->Close();