【问题标题】:Save file in specific folder将文件保存在特定文件夹中
【发布时间】:2013-03-10 11:55:56
【问题描述】:

在我的 Windows 窗体项目中,我试图将生成的文件保存到名为“Invoice”的文件夹中。我可以保存到桌面,但如何保存到子文件夹? 我知道这是非常简单的解决方法,但做了一些研究,但解决方案没有运气。

PdfWriter writer = PdfWriter.GetInstance(doc, 
    new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + ord + ".pdf",
    FileMode.Create));

【问题讨论】:

  • Amrit 这应该是一个简单的任务,将要保存的文件夹的名称添加到与保存到桌面的方式相同的方式中,只需将其替换为实际路径 c:\somefilepath\Invoice

标签: c# winforms file-io


【解决方案1】:

您可以像添加文件名一样添加文件夹名称:

PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Invoice\\" + ord + ".pdf", FileMode.Create));
//                                                                                                                           ^^^^^^^^^^^^

你也可以使用string.Format来组成路径,像这样:

var pathToPdf = string.Format(
    "{0}\\{1}\\{2}.pdf"
,   Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
,   "Invoice"
,   ord
);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(pathToPdf, FileMode.Create));

【讨论】:

  • 嗯,我会使用 Path.Combine 而不是手动进行连接。
  • @CodyGray 使用Path.Combine 我必须使用ord+".pdf" 作为第三个参数,但我想也可以。
【解决方案2】:

将“\\”替换为“\Invoice\”+ord+“.pdf”

【讨论】:

    【解决方案3】:

    如果文件夹不存在则需要创建文件夹然后写入

    使用Directory.CreateDirectory

    Directory.CreateDirectory Method (String)
    
    Creates all directories and subdirectories as specified by path.
    

    例子:

    string fileName = @"C:\Users\SomeUser\My Documents\Foo\Bar\Baz\text1.txt";
    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
    
    using (FileStream fs = new FileStream(fileName, FileMode.Create))
    {
        // ...
    }
    

    完成后,您可以像这样写入文件夹

    PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Invoice\\" + ord + ".pdf", FileMode.Create));
    

    【讨论】:

      【解决方案4】:

      您也可以使用 Save File Dialog 并将 FileStream 的第一个参数替换为保存文件对话框返回的路径。

      【讨论】:

        【解决方案5】:

        我不喜欢把所有东西都放在一条线上……这就是我要做的

        string myFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "MyFolder");
        string filePath = Path.Combine(myFolder, ord + ".pdf");
        PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(filePath, FileMode.Create));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-18
          • 1970-01-01
          • 1970-01-01
          • 2013-08-03
          • 1970-01-01
          相关资源
          最近更新 更多