การอ่านและเขียน TextFile

  1. อ่านและเขียนไฟล์
  2. การเขียนไฟล์แบบสร้างไฟล์ใหม่
  3. การเขียนไฟล์แบบเขียนต่อไฟล์เดิม
  4. การเขียนไฟล์เป็น Windows-874
  5. การตรวจสอบขนาดไฟล์ (file size)

1.อ่านและเขียนไฟล์

อ่านข้อความจากไฟล์ test.txt และนำมาบันทึกลงไฟล์ out.txt

using System;
using System.Collections;
using System.IO;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string ipFilename = @"test.txt";
            string line;
            ArrayList arr = new ArrayList();

            using (StreamReader ipFile = new StreamReader(ipFilename, Encoding.Default, true))
            {
                while ((line = ipFile.ReadLine()) != null)
                {
                    arr.Add(line);
                    Console.WriteLine(line);
                }
            }

            string opFilename = @"out.txt";
            using (StreamWriter w = File.AppendText(opFilename))
            {
                for (int i = 0; i < arr.Count; i++)
                {
                    w.WriteLine("[{0}]  {1}", i, arr[i]);
                }
            }
        }
    }
}

2.การเขียนไฟล์แบบสร้างไฟล์ใหม่

using System.IO;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string opFilename = @"out.txt";

            using (TextWriter tw = new StreamWriter(opFilename))
            {
                tw.WriteLine("Hello World! สวัสดีชาวโลก");
            }
        }
    }
}

3.การเขียนไฟล์แบบเขียนต่อไฟล์เดิม

using System.IO;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string opFilename = @"out.txt";

            using (TextWriter tw = new StreamWriter(opFilename
                , true))
            {
                tw.WriteLine("Hello World! สวัสดีชาวโลก");
            }
        }
    }
}

4.การเขียนไฟล์เป็น Windows-874

ปกติจะเขียนไฟล์เป็น utf-8 ถ้าต้องการให้เขียนเป็น Windows-874 ให้กำหนด Encoding

using System.IO;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string opFilename = @"out.txt";

            using (TextWriter tw = new StreamWriter(opFilename, true
                , Encoding.GetEncoding(874)))
            {
                tw.WriteLine("Hello World! สวัสดีชาวโลก");
            }
        }
    }
}

อ่านไฟล์ UTF8 แล้วเขียนเป็น Windows-874

using System;
using System.Collections;
using System.IO;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string ipFilename = @"inUTF8.csv";
                string line;
                ArrayList arr = new ArrayList();
                using (StreamReader ipFile = new StreamReader(ipFilename
                     , Encoding.UTF8, true))
                {
                    while ((line = ipFile.ReadLine()) != null)
                    {
                        arr.Add(line);
                        Console.WriteLine(line);
                    }
                }
                string opFilename = @"out874.csv";
                using (TextWriter tw = new StreamWriter(opFilename, false
                    , Encoding.GetEncoding(874)))
                {
                    for (int i = 0; i < arr.Count; i++)
                    {
                        tw.WriteLine(arr[i]);
                    }
                }
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

อ่านไฟล์ Windows-874 แล้วเขียนเป็น UTF8

ไฟล์ output จะได้เป็น UTF-8 with BOM

using System;
using System.Collections;
using System.IO;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string ipFilename = @"in874.csv";
                string line;
                ArrayList arr = new ArrayList();
                using (StreamReader ipFile = new StreamReader(ipFilename
                    , Encoding.GetEncoding(874), true))
                {
                    while ((line = ipFile.ReadLine()) != null)
                    {
                        arr.Add(line);
                        Console.WriteLine(line);
                    }
                }
                string opFilename = @"outUTF8.csv";
                using (TextWriter tw = new StreamWriter(opFilename
                    , false , Encoding.UTF8))
                {
                    for (int i = 0; i < arr.Count; i++)
                    {
                        tw.WriteLine(arr[i]);
                    }
                }
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

5.การตรวจสอบขนาดไฟล์ (file size)

รันแล้วจะได้ขนาดไฟล์เป็น Byte

string path = "logs/20200310.log";
long length = new System.IO.FileInfo(path).Length;
log.Info(length);
// 27463  
//  7431