C#使用StreamWriter将文本框内容写入txt文件出现字符截断问题求助
问题排查与修复方案
核心问题原因
你遇到的写入内容只有前40字符加...的问题,以及其他代码隐患如下:
- 直接原因:else分支中调用
Write方法时,传入的是writingTextBox控件对象本身,而非文本内容属性Text。控件默认的ToString()方法会输出控件类名+前若干位文本,超出长度自动截断加...,和你遇到的现象完全吻合。 - 逻辑写反:
if (!File.Exists(fileName))判断的是文件不存在的场景,你的注释写反了对应的处理逻辑。 - 变量名错误:定义的路径变量是
fileName1,判断存在时用的是未声明的fileName;else分支中声明的变量是writer,后续调用用的是未声明的writer1,正常编译都会报错。 - 路径拼接错误:else分支的路径
@"C:\Users\-----\AppData\Local"后缺少反斜杠,会导致最终生成的路径错误,可能找不到文件。 - 资源管理不规范:
using代码块会自动释放StreamWriter资源,不需要手动调用Close()和Dispose();else分支没有套using,遇到异常时会出现资源泄漏。
修正后可直接运行的代码
// 统一拼接路径,避免重复写路径出现拼写错误 string savePath = Path.Combine(@"C:\Users\-----\AppData\Local\", $"{nameTextBox.Text} FileName.txt"); // 无论文件是否存在都可以直接用这个重载,第二个参数传false表示覆盖原有内容,传true表示追加 using (StreamWriter writer = new StreamWriter(savePath, false, Encoding.UTF8)) { // 明确传入文本属性的内容 writer.Write(writingTextBox.Text); } // 不需要手动关闭/释放,using会自动处理
注:如果需要保留原有文件内容,在末尾追加新内容,把
StreamWriter构造函数的第二个参数改为true即可。
内容的提问来源于stack exchange,提问作者jshh99
相关产品推荐
相关产品推荐

