Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转储到控制台就像一个符咒,但不是一个文件,C#_C#_File - Fatal编程技术网

转储到控制台就像一个符咒,但不是一个文件,C#

转储到控制台就像一个符咒,但不是一个文件,C#,c#,file,C#,File,考虑这段代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace DataExtractor { class Program { static void Main(string[] args) { string destpath = Dire

考虑这段代码:

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace DataExtractor
{
    class Program
    {
        static void Main(string[] args)
        {
            string destpath = Directory.GetCurrentDirectory();
            destpath = Path.Combine(destpath, "DIR");
            DirectoryInfo Dest = Directory.CreateDirectory(destpath);
            DirectoryInfo Source = new DirectoryInfo(Directory.GetCurrentDirectory() + "\\IEOD");
            FileInfo[] fiArr = Source.GetFiles("*.csv");
            Console.WriteLine("Search Date:");
            string srchdate = Console.ReadLine();
            FileInfo r;
            foreach (FileInfo f in fiArr)
            {
                r = new FileInfo(Path.Combine(destpath,f.Name));
                r.Create();
                string path = Path.Combine(destpath, f.Name);
                string[] lines = File.ReadAllLines(f.FullName);
              var output = lines.Where(line => line.Split(',')[0] == srchdate);

                        try
                        {
                            //File.WriteAllLines(path, output.ToArray());
                            Console.WriteLine(output.ToArray());
                            Console.Write("\n");

                        }
                        catch(Exception ex)
                        {
                            Console.WriteLine(ex.StackTrace);
                        }


                }



            Console.ReadKey();


        }
    }
}
这段代码有什么问题?在try块内,Console.WriteLine()像一个符咒一样工作,但是try块内的注释行File.writeAllines()不工作。出现的错误消息是,所述文件{}正被另一个进程使用

如果我使用StreamWriter或File.writeAllines(),无论发生什么情况,都会发生这种情况

谢谢你的帮助。
Soham

您应该删除以下行:

    r = new FileInfo(Path.Combine(destpath,f.Name));
    r.Create();

您正在创建输出文件并保持其打开状态。File.writeAllines()将为您创建文件(完成后将其关闭)

您应该删除以下行:

    r = new FileInfo(Path.Combine(destpath,f.Name));
    r.Create();

您正在创建输出文件并保持其打开状态。File.writeAllines()将为您创建文件(完成后将其关闭)

您的
r
对象将其保持打开状态。

您的
r
对象将其保持打开状态。

File.writeAllines()创建、写入并关闭文件,因此您不希望调用r.create()

File.writeAllines()创建、写入和关闭文件,因此您不希望调用r.Create()

哇!谢谢!我怀疑这个问题,但从没想过Create()会让文件保持打开状态。谢谢!谢谢!我怀疑这个问题,但从没想过Create()会让文件保持打开状态。谢谢Hanks Anton,我没意识到r.Create()会保持打开谢谢Anton,我没意识到r.Create()会保持打开