【问题标题】:Appending Text to a file path将文本附加到文件路径
【发布时间】:2013-08-06 15:30:25
【问题描述】:

这可能是一个简单的问题,我正在 VS 2012 中编写一个 WinForms C# 应用程序。我想知道是否有办法在文本框中的某些内容中添加 .csv 之类的扩展名。假设用户在 C:\Users\Desktop\filename 中写入,但省略了路径的 .csv 部分。单击执行按钮后,有什么方法可以添加 .csv 吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您可以使用Path.ChangeExtension

    // Nota bene: Path.ChangeExtension does not change textBox1.Text directly (or any
    //            argument given), you MUST use the result if you care about it.
    string newPath = Path.ChangeExtension(textBox1.Text, "csv");
    

    句点是可选的,文件名部分不需要包含扩展名。

    作为将来的参考,如果您能想到某事,您需要处理文件或目录的路径...它存在于System.IO.Path 中。很少有人不支持该类中的常见任务。

    【讨论】:

    • 我正在使用类似于 finalOutput = new StreamWriter(textBox1.Text);但由于某些原因,它不适用于此。
    • 您是否将新路径分配回textBox1.Text
    • 我应该这样写吗,finalOutput = new StreamWriter(newPath)?
    • 那是正确的。 textBox1.Text 没有通过引用传递,因此Path.ChangeExtension 无法修改引用。在 C# 中,几乎假设如果您使用的是字符串(“不可变对象”),那么 only 更新 that instance 的方法是存储结果 back进入那个实例。 (就像x + 1 实际上并没有增加x。)
    • 非常感谢您的帮助。
    【解决方案2】:

    如果您不想更改字符串中的有效扩展名,您可以这样做:

    // first test for an extension
    if(!Path.HasExtension(textBox1.Text.Trim()))
    {
        // then add on '.csv' if one does not exist
        string path = Path.ChangeExtension(textBox1.Text.Trim(), ".csv");
    
        // ... use path ...
    }
    

    【讨论】:

    • (+1) 我已对此进行了更新,以使用“正确”的方式添加/替换扩展程序,并解释了您与我的不同之处。
    • 有人能告诉我为什么我两次被否决了吗?这是荒唐的。如果有问题至少让我知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多