C#调用File.WriteAllText()创建文件成功但未写入内容问题咨询
C# File.WriteAllText 仅创建文件无内容问题排查方案
核心问题排查点
- 路径转义错误
你代码中的路径写法@". est est.txt"存在转义异常,\t被解析为制表符而非路径分隔符+test目录,导致写入路径不符合预期,写入逻辑异常。正确路径写法二选一即可:// 方式1:保留verbatim字符串,补全正确路径写法 File.WriteAllText(@".\test\test.txt", textToWrite); // 方式2:不使用verbatim字符串,转义路径分隔符 File.WriteAllText(".\\test\\test.txt", textToWrite); - 待写入内容本身为空
请确认installedVersion.ToString()的返回值非空,可增加校验逻辑定位:textToWrite= installedVersion.ToString(); // 增加空值校验 if(string.IsNullOrWhiteSpace(textToWrite)) { log.Warn("待写入内容为空,跳过文件写入"); return; } log.Debug("Release version Update : " + textToWrite); - 异常被上层代码吞掉
File.WriteAllText写入失败时默认会抛出异常,若你外层有全局try-catch逻辑,很可能把权限不足、文件被占用等IOException、UnauthorizedAccessException异常吃掉,导致你看不到报错信息。可增加异常捕获日志排查:try { File.WriteAllText(@".\test\test.txt", textToWrite); } catch(Exception ex) { log.Error("文件写入失败", ex); } - 相对路径对应的实际目录不符合预期
你使用的相对路径是基于程序运行时的工作目录,很可能和你预期的开发目录不一致,导致你找错了生成的文件。可打印绝对路径确认写入位置:var absolutePath = Path.GetFullPath(@".\test\test.txt"); log.Debug("文件写入的绝对路径为:" + absolutePath);
内容的提问来源于stack exchange,提问作者Manish Katepallewar
相关产品推荐
相关产品推荐

