C# .NET:获取文件路径数组后WriteAllLines写入TXT无反应问题
问题描述
尝试将文件夹中所有文件的路径写入一个.txt文件,编写了如下C#代码:
string logFilePfad = @"..\example\folder"; string txtLogDatei = Path.Combine(logFilePfad, "LogFile.txt"); string[] files = Array.Empty<string>(); try { files = Directory.GetFiles(topicPfad); } catch (Exception ex) { MessageBox.Show("Error when getting files/file names: " + ex.Message); } try { System.IO.File.WriteAllLines(txtLogDatei, files); } catch (Exception ex) { MessageBox.Show("Error at WriteAllLines " + ex); }
代码执行时能成功获取非空的string[]类型files数组,遍历数组可通过MessageBox正常显示所有文件路径,但调用System.IO.File.WriteAllLines方法时无任何反应且未抛出异常。手动创建字符串数组(例如string[] files = { "file1", "file2", "file3" };)时该方法可正常工作,怀疑是获取到的files数组或路径存在问题。
排查与解决方案
- 确认输出文件的实际位置:相对路径
..\example\folder的解析依赖程序运行时的工作目录,可能和你预期的位置不一致。在调用WriteAllLines前添加代码,输出完整路径验证:
打开该路径查看,大概率能找到生成的MessageBox.Show("实际输出路径:" + Path.GetFullPath(txtLogDatei));LogFile.txt文件。 - 改用绝对路径:直接指定输出文件夹的绝对路径,避免相对路径带来的工作目录问题,例如:
string logFilePfad = @"C:\Your\Actual\Folder\Path"; - 检查数组内容细节:虽然遍历能显示路径,但可以额外验证数组中每个元素的有效性,比如是否包含不可见字符:
若存在异常内容,可对路径做清理处理后再写入。foreach (var file in files) { MessageBox.Show($"路径长度:{file.Length},内容:{file}"); }
内容的提问来源于stack exchange,提问作者mbur_1
相关产品推荐
相关产品推荐

