星期一, 6月 12, 2017

[C#] 讀取多個文字檔,並取前四碼的交集後將結果輸出為文字檔

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

namespace ConsoleEX1
{
    class Program
    {
        static void Main(string[] args)
        {
            int Year,i,j,line;
            string input, ID;
            //FileInfo f;
            StreamReader sr,sr2;
            Console.WriteLine("請輸入要計算幾年:");
            Year = int.Parse(Console.ReadLine());  // 文字轉數字
            string[] strArray = new string[Year];    // 文字陣列
            FileInfo[] fileArray = new FileInfo[Year];
         
            string[][] IDs2 = new string[Year][];
            j = 0;
            for (i = 0; i < Year; i++)
            {
                string[] IDs = new string[299];
                line = 0;
                Console.WriteLine("請輸入第{0}個檔案的路徑:", i + 1);
                input = Console.ReadLine();
                strArray[i] = input;
                fileArray[i] = new FileInfo(input);
                try
                {
                    sr = fileArray[i].OpenText();
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.Read();
                    return;
                }
               // string[,] IDs = new string[];
                while (sr.Peek() >= 0)
                {

                    ID = sr.ReadLine().ToString().Substring(0, 4);
                    //Console.WriteLine("第{0}個檔案的第{1}行,值為{2}", i, line, ID);
                   // IDs2[i][line] = ID;
                    IDs[line] = ID;
                    line++;
                }

                  IDs2[i] =   IDs ;
                  Console.WriteLine("第{0}個檔案讀取完成!",i+1);
                //sr2 = fileArray[i].OpenText();
             

                    sr.Close();
            }

            for (j = 0; j < Year; j++)
            {

                //   ID = sr2.ReadLine().ToString().Substring(0, 4);
                foreach (string s in IDs2[j])
                {
                    if (s != null)
                    {
                        Console.WriteLine("第{0}個檔案的值為{1}", j, s);
                    }
               
                }
            }
            Console.WriteLine("=============================================");
            String[] result = IDs2[0].Intersect(IDs2[1]).ToArray();
            StreamWriter sw;
            Console.WriteLine("請輸入要輸出的路徑及名稱:");
            string fName = Console.ReadLine();
            FileInfo f = new FileInfo(fName);
            sw = f.CreateText();

            foreach (string s in result)
            {
                Console.WriteLine("交集為{0}",s);
                sw.WriteLine(s);
            }
            sw.Flush();
            sw.Close();
            Console.Read();
        }
    }
}

沒有留言: