간단하게 FTP 서버에 있는 텍스트 파일을 수정하기 위하여 만들었던 프로그램입니다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Runtime.InteropServices;

namespace FTPListUpload
{
    public partial class Form1 : Form
    {
        [DllImport("kernel32.dll")]
        private static extern int GetPrivateProfileString(String section, String key, String def, StringBuilder retVal, int size, String filePath);
 
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (!File.Exists("setting.ini"))
            {
                MessageBox.Show("설정 파일이 존재하지 않습니다. (setting.ini)", "존재하지 않음!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                Application.Exit();
            }
            try
            {
                WebClient wc = new WebClient();
                Stream data = wc.OpenRead("http://" + IniReadValue("site") + IniReadValue("path"));
                StreamReader read = new StreamReader(data);

                List<string> lines = new List<string>();

                string nextLine = read.ReadLine();
                while (nextLine != null)
                {
                    lines.Add(nextLine);
                    nextLine = read.ReadLine();
                }

                textBox1.Lines = lines.ToArray();
            }
            catch (Exception) { FileWrite("FTP 서버에 접근하지 못했습니다."); Application.Exit(); }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                string ftpfullpath = "ftp://" + IniReadValue("site") + IniReadValue("ftppath");
                FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
                ftp.Credentials = new NetworkCredential(IniReadValue("username"), IniReadValue("password"));

                ftp.KeepAlive = false;
                ftp.UseBinary = true;
                ftp.UsePassive = false;

                ftp.Method = WebRequestMethods.Ftp.UploadFile;
                byte[] buffer = Encoding.UTF8.GetBytes(textBox1.Text);
                Stream ftpstream = ftp.GetRequestStream();
                ftpstream.Write(buffer, 0, buffer.Length);
                ftpstream.Close();
                ftp.Abort();
            }
            catch (Exception) { FileWrite("FTP 서버에 파일을 업로드 하지 못했습니다."); }
        }

        private void FileWrite(string str)
        {
            FileStream fs = new FileStream("progLog.txt", FileMode.Append, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
            sw.WriteLine("[" + DateTime.Now.ToString("yyyy/MM/dd h:mm tt") + "] " + str);
            sw.Flush();
            sw.Close();
            fs.Close();
        }

        public String IniReadValue(String Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString("setting", Key, "", temp, 255, "./setting.ini");
            return temp.ToString();
        }
    }
}