VC++について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
つばき

VC++について

#1

投稿記事 by つばき » 16年前

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点を改善したいです。

バグ

Re:VC++について

#2

投稿記事 by バグ » 16年前

>>ファイル名の取得

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();

閉鎖

“C言語何でも質問掲示板” へ戻る