将字符串[]设为常规字符串

时间:2016-11-28 20:25:34

标签: c#

我尝试让用户选择一个路径,程序稍后会使用该路径,我之所以要将它写入文件,可能有点无关紧要,但我认为这是最简单的方法为自己处理想要通过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"无法隐式转换类型'字符串'到'字符串[]' "

3 个答案:

答案 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);
  1. ToString()不会返回字符串的乱码,只是简单的一个字符串。
  2. 在路径中使用完整路径或./。那个害羞的“选择了”你需要,对吗?
  3. 使用“@”属性,您可以使用普通的“\”
  4. 确保存在“数据”文件夹。当用户在对话框中选择“数据”文件夹时,你会做什么?保存到“... \ Data”+ @“\ Data \ storagedir.cfg”:)担心“数据”文件夹中的“数据”文件夹太多
相关问题