我在控制台窗口中使用控制台应用程序,我看到每行两次为什么

本文关键字:控制台 为什么 两次 我看 窗口 应用程序 | 更新日期: 2023-09-27 18:02:41

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int y;
            FileInfo fi;
            string[] newDest_files;
            string[] lines = global::EachFileDirectory.MyResource.video_formats.Split    (new Char[] {''r',''n'});
            foreach (string line in lines)
            {
                newDest_files = Directory.GetFiles(Environment.CurrentDirectory,         line); //strFilter );
                for (y = 0; y < newDest_files.Length; y++)
                {
                    fi = new FileInfo(newDest_files[y]);
                    string newFolder = Path.Combine(fi.DirectoryName, fi.Name                 + "_Directory");
                    if (!Directory.Exists(newFolder))
                        Directory.CreateDirectory(newFolder);
                    Console.WriteLine("processed: " + line.Length + " files");
                    File.Move(fi.FullName, Path.Combine(newFolder, fi.Name));
                }
                if (newDest_files.Length == 0)
                {
                    Console.WriteLine(line + "No files found in the current directory      of format: ");
             }
        }
        Console.WriteLine("'n Done! Press any key to exit...");
        Console.ReadKey();         
    }
}

}

问题是当我添加了行:string[] lines = global::EachFileDirectory.MyResource.video_formats。Split(new Char[] {''r',''n'});

从那时起,我在控制台窗口中看到所有行都是双行,例如:

* .264格式的当前目录中找不到文件:格式的当前目录中找不到文件:*。格式的当前目录中没有文件:格式为

的当前目录中找不到文件

我需要在控制台窗口中看到的是:

* .264格式的当前目录中找不到文件:*。格式:

当前目录中找不到文件

等等,但因为我有行:string[] lines = global::EachFileDirectory.MyResource.video_formats。Split(new Char[] {''r',''n'});还有代码末尾的一行:Console。WriteLine(line + "当前目录中没有文件");

我看到在当前目录中没有文件的格式:也在每行之间。

如何解决这个问题?

在项目的参考上,我添加了一个包含许多视频格式扩展的文本文件,以这种方式:

* .264*。mov* .avi

等.....

的问题是文本:没有文件发现在当前目录的格式:出现在每种格式附近,也出现在两种格式之间,我希望它只出现在每种格式附近的控制台窗口中!

我在控制台窗口中使用控制台应用程序,我看到每行两次为什么

你在'r 'n上进行分割-这意味着你正在转换像

这样的输入
"foo'r'nbar"

为:

{ "foo", "", "bar" }

…所以你要找到所有带有模式的文件。

有多种选项:

  • 创建StringReader并多次调用ReadLine而不是使用Split
  • 在分割
  • 之前将'r替换为空字符串
  • 分割 'n,然后修剪每个条目
  • 拆分
  • 后指定StringSplitOptions.RemoveEmptyEntries

添加StringSplitOptions。RemoveEmptyEntries to Split method:

string[] lines = global::EachFileDirectory.MyResource.video_formats.Split(new Char[] { ''r', ''n' }, StringSplitOptions.RemoveEmptyEntries);