You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

File.WriteAllText抛出“找不到文件”异常求助(VS2012 VB.NET)

解决File.WriteAllText抛出“找不到文件”异常的问题(.NET Framework 4.5.2 VB.NET)

问题场景

环境:Visual Studio 2012、VB.NET Windows窗体应用、.NET Framework 4.5.2
代码中File.WriteAllText抛出“找不到文件”异常,但官方文档显示该方法仅会抛出ArgumentException、ArgumentNullException等指定类型异常。已排查文件路径、尝试以管理员身份运行、重启电脑,问题仍存在。

原代码:

Dim filepath As String = StringFilePath + "\" + DateTime.Now.ToString("yyyy/MM")
Dim stringFile As String = ""
If My.Computer.FileSystem.DirectoryExists(filepath) = False Then
    My.Computer.FileSystem.CreateDirectory(filepath)
End If

stringFile = StringHTMLHeader + StringTestDoc + StringHTMLFooter

StringLastSavedFile = Path.Combine(filepath, "Test Result " + DateTime.Now.ToString("dd-HH-mm-ss") + ".htm")

Try
    File.WriteAllText(StringLastSavedFile, stringFile)
Catch ex As Exception
End Try

问题根源

代码生成目录路径时使用了DateTime.Now.ToString("yyyy/MM"),Windows系统的目录名称不允许包含/字符(该字符是路径分隔符),导致My.Computer.FileSystem.CreateDirectory(filepath)执行失败(代码未捕获此异常,因此无法感知)。后续File.WriteAllText尝试写入不存在的目录下的文件,从而触发“找不到文件”异常。

修正方案

  1. 将日期格式中的/替换为Windows允许的目录名字符(如-),确保生成合法的目录路径;
  2. 增加异常捕获逻辑,便于排查后续问题;
  3. 统一使用Path.Combine拼接路径,避免手动拼接时出现路径分隔符错误。

修正后的代码:

Dim filepath As String = Path.Combine(StringFilePath, DateTime.Now.ToString("yyyy-MM"))
Dim stringFile As String = StringHTMLHeader + StringTestDoc + StringHTMLFooter

Try
    ' 确保目录存在,若不存在则创建
    If Not My.Computer.FileSystem.DirectoryExists(filepath) Then
        My.Computer.FileSystem.CreateDirectory(filepath)
    End If

    Dim fileName As String = $"Test Result {DateTime.Now.ToString("dd-HH-mm-ss")}.htm"
    StringLastSavedFile = Path.Combine(filepath, fileName)

    File.WriteAllText(StringLastSavedFile, stringFile)
Catch ex As Exception
    ' 输出异常信息便于排查
    MessageBox.Show($"操作失败:{ex.Message}{Environment.NewLine}{ex.StackTrace}")
End Try

内容的提问来源于stack exchange,提问作者user22716518

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:15:57