0

私の問題は、特定のフィールドのテキストに基づいてXMLのファイル名を保存できないことです。次の行は次のとおりです。

XmlTextWriter writer = new XmlTextWriter(@"{0}\ops\op-" + OpName.Text.Replace(" ", "_") + ".xml", 
                                         System.Text.Encoding.UTF8);

私が得る問題は、パスが見つからないことです:そして(コード内で)をC:\[stuff]\{0}\op\op-.xml削除すると、{0}can't find C:\op\op-.xml

C:\[stuff]\op\そのフォルダにファイルを作成できるように、検索する必要があります。

この行を変更するにはどうすればよいですか?

4

2 に答える 2

2

あなたの道の中で何{0}を表していますか?XmlTextWriterコンストラクターは、フォーマットされた文字列ではなく、ファイルパスを取ります。たとえば、ファイルパスを段階的に準備すると、はるかに読みやすくなります。Path.Combineメソッドを利用することによって:

var fileName = string.Format("op-{0}.xml", OpName.Text.Replace(" ", "_"));
var rootDir = /* this would be {0} from your original example */
var filePath = Path.Combine(rootDir, "ops", fileName);

XmlTextWriter writer = new XmlTextWriter(filePath, System.Text.Encoding.UTF8);
于 2012-12-02T11:33:28.507 に答える
0
string additionalStr=OpName.Text.Replace(" ", "_");
if (string.IsNullOrEmpty(additionalStr))
{
    return;
    //or throw error or make default file name depending on the required logic
}
string directoryPath=String.Format(@"{0}\ops\",dirPrefix);
bool isDirectoryExists=Directory.Exists(directoryPath);
if (!isDirectoryExists){     
    //required logic. for example set default directory
}
string fileName=additionalStr+".xml";
string filePath=Path.Combine(directoryPath,fileName);
XmlTextWriter writer = new XmlTextWriter(filePath,System.Text.Encoding.UTF8);
于 2012-12-02T11:30:22.880 に答える