File.Exists 返回 false,即使我可以看到文件 C#
Posted
技术标签:
【中文标题】File.Exists 返回 false,即使我可以看到文件 C#【英文标题】:File.Exists is returning false even though I can see the file C# 【发布时间】:2016-09-24 06:50:46 【问题描述】:问题
我有一个功能可以让用户在执行此操作时编辑图像我将这个新图像保存到他们保存到数据库等的文件中......
问题是当我尝试查找刚刚保存的文件时,它说它不存在但确实存在?
代码
这里我将新文件保存到 TEMP 文件夹:
string newFullTempFolderURL = Path.Combine(Global.TempFolder, newFullFileName + ".png");
_image.Save(newFullTempFolderURL, System.Drawing.Imaging.ImageFormat.Png);
此时,当我检查文件夹时,文件位于带有新图像的文件夹中。
然后,当我继续将文件上传到服务器(使用 BITS)时,我会检查以确保文件存在:
if (File.Exists(Path.Combine(Global.TempFolder + "\\" + newFullFileName)))
当我可以亲眼看到文件时,这将返回 false (不存在)!
有人遇到过同样的问题吗?
EDIT1:
newFullFileName 已经包含 .png:
string newFullFileName = string.Format(oldFileName.Substring(0, oldFileName.IndexOf("_") + 1) + DateTime.Now.ToString(), "yyyyMMddhhmmss").Replace(@"/", "").Replace(" ", "").Replace(":", "") + ".png";
【问题讨论】:
if 条件中缺少扩展名 .png.. 什么是 newFullFileName?我认为它的末尾没有“.png”,因为它使用 + 扩展来创建 newFullTempFolderURL。 @Ben Clarke 如果它已经有了“.png”扩展名,那么你在创建“newFullTempFolderURL”时附加了另一个“.png”,所以它实际上是在创建“newFullTempFolderURL
是.png.png
。感谢您的帮助。
如果您只是将手动构建的路径 Global.TempFolder + "\\" + newFullFileName
传递给它,那么使用 Path.Combine
有什么意义?
【参考方案1】:
根据您的编辑,您将添加 .png 到 newFullFileName.. 然后 newFullTempFolderURL 将添加另一个 .png 到您的文件名。
所以 ti 会变成 FILENAME.png.png 它会返回错误。
从 newfullFilename 和
中删除 .png下面试试
if (File.Exists( Path.Combine(Global.TempFolder, newFullFileName))
【讨论】:
没错。请注意 Path.Combine 在这里没有用处。 @Sachu 请查看编辑。我忘了添加这一行,它已经添加了.png。 您不需要将'\\'
传递给Combine
。 Path.Combine(Global.TempFolder, newFullFileName)
【参考方案2】:
您的 File.Exists 不包含您在创建“newFullTempFolderURL”时手动添加的文件扩展名。您需要将“.png”附加到 File.Exists 检查或更好地使用 File.Exists(newFullTempFolderURL);因为它已经预先制作好了。
编辑1: 您正在第二次添加“.png”。这是错误的,因为创建的文件是“.png.png”,然后您正在检查“.png”是否存在。
【讨论】:
以上是关于File.Exists 返回 false,即使我可以看到文件 C#的主要内容,如果未能解决你的问题,请参考以下文章
检查文件是不是存在? file.exists() 总是返回 false
File.Exists() 在 IIS 上总是返回 false