如何为用户提供将文件保存在C#中所需位置的选项?

时间:2015-11-08 15:41:56

标签: c# file console-application

我知道如何在C#控制台应用程序中创建和保存文件但是如果我希望用户选择他们想要保存的位置呢?我不知道如何才能做到这一点。

编辑 - 我意识到输入用户想要保存文件的位置非常困难,但是可以像创建Windows Word文档时那样保存文件,这样用户就可以看看他们想要保存文件的位置Example

4 个答案:

答案 0 :(得分:1)

如果你想要一个完整的控制台应用程序,那就是没有创建窗口,那么只有一个正确的东西要做:要求用户在命令行上指定保存位置*

鉴于你有一个控制台应用程序,你可能已经对命令行进行了一些检查,但如果没有,那么可以从你args的{​​{1}}参数中读取命令行。 :

Program.Main

互联网上有一些例子可以处理命令行,如果你遇到困难,或者可以专门针对你遇到的问题提出新问题。

*)现在,因为这是唯一正确的方法:

如果用户需要在命令行上传递它,则用户具有所有常用的细节,例如可用的选项卡完成。在调用程序以找到正确的目录之前,用户还可以使用static void Main(string[] args) { ... } dir

另一方面,如果您要求用户输入,那么用户将标签已完成, 无法使用{{1} }或cd,因此必须一直手动输入。几乎可以保证错字或错误。

从用户体验的角度来看,这非常烦人。因此,程序员要求用户在程序执行期间手动键入文件路径。因此,必须在命令行中指定它。

答案 1 :(得分:0)

了解SaveFileDialog

private void button1_Click(object sender, System.EventArgs e)
{
     Stream myStream ;
     SaveFileDialog saveFileDialog1 = new SaveFileDialog();

     saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"  ;
     saveFileDialog1.FilterIndex = 2 ;
     saveFileDialog1.RestoreDirectory = true ;

     if(saveFileDialog1.ShowDialog() == DialogResult.OK)
     {
         if((myStream = saveFileDialog1.OpenFile()) != null)
         {
             // Code to write the stream goes here.
             myStream.Close();
         }
     }
}

准备从msdn example

测试示例

如果您想使用> cd(ChDir)之类的东西,请查看

Environment.CurrentDirectory

或/并强制用户通过himselft编写好的目录并使用@Carl aswere :)但请记住我们留在21世纪的人是懒惰的

答案 2 :(得分:0)

这并不难。您需要一个控制台来使用string path = Console.ReadLine();读取用户的输入。用户将输入首选路径,它将存储到path变量中。现在你应该检查这个路径是否退出if(Directory.Exists(path))如果path存在,如果路径不存在,它将返回true。

代码示例:

Console.WriteLine("Insert a path: ");
string path = Console.ReadLine();

if(Directory.Exists(path)){
//save logic
}
else{
//path does not exist handler
}

注意:如果要访问Directory类,则应使用System.IO命名空间。

答案 3 :(得分:0)

你可以使用SaveFileDialog作为Taumantis说但你必须添加

  

System.Windows.Froms

命名空间,您必须将主方法标记为单个公寓线程

 class Program
{
    [STAThread]
    static void Main(string[] args)
    {
  SaveFileDialog saveFileDialog1 = new SaveFileDialog();

        saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
        saveFileDialog1.FilterIndex = 2;
        saveFileDialog1.RestoreDirectory = true;

        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {

        }


        Console.ReadKey();
    }