当我尝试这个时,我得到了IOException错误,我不知道我做错了什么:

这是我的密码:
FileStream fStream = new FileStream(PDFFilePath(), FileMode.CreateNew, FileAccess.ReadWrite);哪里
private string PDFFilePath()
{
m_sFilePath = "C:/Pictures/";
return m_sFilePath;
}我遗漏了什么?
我使用这个FileStream来使用Pdf.Select NuGet保存PDF文档。它使用了一种方法:
PdfDocument.Save(Stream stream);发布于 2016-11-28 17:42:28
我认为您应该这样指定您的路径:
private string PDFFilePath(string filename)
{
m_sFilePath = @"C:\Pictures\" + filename;
return m_sFilePath;
}正如@Reisclef所说,您必须提供文件路径,而不是目录。由于您使用的是FileMode.CreateNew,所以它必须是一个新文件,所以在返回之前您可能还需要使用File.Exists(m_sFilePath)。
发布于 2016-11-28 17:46:11
你这里有几个问题。
首先,如果您使用像C:\Pictures\这样的路径,它会抱怨尾随的\。
其次,您需要在这里指定一个实际的文件,而不仅仅是一个目录。在这种情况下,仅仅指定一个目录(而不是一个文件)是没有意义的--这就是为什么它被称为文件流而不是目录流。为此,我建议使用Path.Combine。另外,如果您只是试图将一个已经存在的文件移动到这个目录,那么您应该执行File.Move,而不是使用FileStream。
第三,只有在文件不可能已经存在于目标文件夹的情况下才使用FileMode.CreateNew;如果文件确实存在,则会引发异常。
第四,像这样硬编码路径是一种糟糕的做法。您通常希望从配置文件中获取路径,并确保Pictures目录在尝试执行此操作之前确实存在;否则,当您将其部署到另一台计算机时,它可能会失败。
第五,在这种情况下,PDFFilePath方法似乎毫无意义--您可以使用字符串常量做同样的事情,或者在构造函数中创建只读字符串。
https://stackoverflow.com/questions/40850106
复制相似问题