2012-12-02 37 views
0

我的問題是,我不能有XML的文件名稱基於給定字段的文本保存:這裏是行:XMLWriter的問題

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\所以它可以使該文件夾中文件。

我怎麼能改變這一行?

回答

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); 
+0

解決方案中的「-'後的」{0}「是什麼?並在我的'{0}'是獲取路徑,以便它可以找到'C:\ [stuff] \ ops \'並將文件保存在那裏。 – user1720845

+2

@ user1720845不同之處在於兩個答案都使用'String.Format',其中'「{0}」'實際上有任何意義,而您只是在字符串中使用它,這會導致文字爲{0} – Rotem

+0

好的,我只是把'@「{0}」'放在rootdir中? – user1720845

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); 
+0

它並沒有解決它尋找不存在的,因爲它不只是看對C的需要{0}文件夾的問題:\ OP \運算.XML但問題在於它正在尋找C:\ [stuff] \ {0} \ op \ op-.xml而不是C:\ [stuff] \ op \ op-.xml。它無法嘗試命名該文件,因爲它無法找到放置它的位置。 – user1720845

+0

添加了代碼以檢查目錄是否存在 – Frank59