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

本文关键字:保存 文件 一个 存在 选项 位置 用户 | 更新日期: 2023-09-27 18:21:16

我知道如何在C#控制台应用程序中创建和保存文件,但如果我希望用户选择保存文件的位置,该怎么办?我不知道怎样才能做到这一点。

edit-ive意识到,很难输入用户想要保存文件的位置。但是,是否可以像创建windows word文档时那样保存文件,这样用户就可以看到他们想要将文件保存在哪里。示例

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

如果您想要一个完整的控制台应用程序,即没有创建窗口,那么只有一件合适的事情要做:要求用户在命令行上指定保存位置。*

考虑到您有一个控制台应用程序,您可能已经对命令行进行了一些检查,但如果没有,那么命令行可以从args参数读取到Program.Main:

static void Main(string[] args)
{
    ...
}

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


*)现在,为什么这是唯一正确的方式:

如果用户需要在命令行上传递它,那么用户就可以使用所有常见的细节,例如制表符完成。用户也可以在调用程序之前使用dircd来查找正确的目录。

另一方面,如果您要求用户输入它,那么用户将完成制表符,将不能使用dircd,因此必须手动键入它。打字错误几乎是可以保证的。

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

阅读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示例的示例

如果你想玩>cd(ChDir)之类的东西,那么看看

Environment.CurrentDirectory

或者/并强迫用户通过himselft编写好的目录,并使用@Carl aswere:)但请记住,我们在21世纪离开时,人们都是懒惰的

您可以像Taumantis所说的那样使用SaveFileDialog,但您必须添加

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();
    }

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

代码示例:

Console.WriteLine("Insert a path: ");
string path = Console.ReadLine();
if(Directory.Exists(path)){
//save logic
}
else{
//path does not exist handler
}

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