我尝试让用户选择一个路径,程序稍后会使用该路径,我之所以要将它写入文件,可能有点无关紧要,但我认为这是最简单的方法为自己处理想要通过GUI随时更改它的用户。我尝试将我认为的字符串数组转换为用于File.Writealltext的普通字符串,但我没有这样做。
我使用的代码如下:
string[] selecteddir = Directory.GetDirectories(folderBrowserDialog1.SelectedPath).ToString();
File.WriteAllText(@"/Data/storagedir.cfg", insertstringhere);
整个代码(表单加载)如下所示。
private void savelocation_Load(object sender, EventArgs e)
{
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
string[] selecteddir = Directory.GetDirectories(folderBrowserDialog1.SelectedPath).ToString();
File.WriteAllText(@"/Data/storagedir.cfg", insertstringhere);
}
else
{
MessageBox.Show("Something went wrong");
}
}
错误如下:
CS0029"无法隐式转换类型'字符串'到'字符串[]' "
答案 0 :(得分:6)
要将所有目录名称写入storagedir.cfg
,您可以使用WriteAllLines
:
string[] selecteddir = Directory.GetDirectories(folderBrowserDialog1.SelectedPath);
File.WriteAllLines(@"/Data/storagedir.cfg", selecteddir);
^^^^^
将数组作为第二个参数。
或使用String.Join
string[] selecteddir = Directory.GetDirectories(folderBrowserDialog1.SelectedPath);
File.WriteAllText(@"/Data/storagedir.cfg", String.Join(", ", selecteddir);
如果您尝试将所选路径保存到storagedir.cfg
:
File.WriteAllText(@"/Data/storagedir.cfg", olderBrowserDialog1.SelectedPath)
答案 1 :(得分:0)
很难弄清楚你想要实现的目标,尽管你的问题是你得到一个包含Directory.GetDirectories(folderBrowserDialog1.SelectedPath)
的子目录列表,然后在其上调用.ToString()
。这会引发你的错误。
也许您不需要存储目录数组,而只需要存储用户选择的目录。如果是这种情况,那么您可以完全省略该行,然后将所选目录存储在您的配置中。
所以这个:
File.WriteAllText(@"/Data/storagedir.cfg", insertstringhere);
成为这个:
File.WriteAllText(@"/Data/storagedir.cfg", folderBrowserDialog1.SelectedPath);
然后,当您需要一个配置目录列表时,您可以从配置中读取该设置并获取一系列目录,如:
string[] dirs = Directory.GetDirectories(theStringInMyConfig);
答案 2 :(得分:-1)
这是更正:
string selecteddir = Directory.GetDirectories(folderBrowserDialog1.SelectedPath).ToString();
File.WriteAllText(selecteddir + @"\Data\storagedir.cfg", insertstringhere);