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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:43:12