using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Configuration;
namespace Header
{
class AddHeader
{
static void Main(string[] args)
{
string sourceFile = ConfigurationManager.AppSettings["sourceFilePath"];
string targetFile = ConfigurationManager.AppSettings["targetFilePath"];
string headerFile = ConfigurationManager.AppSettings["headerFilePath"];
string archiveFile = ConfigurationManager.AppSettings["archiveFilePath"];
string csvContent = string.Empty;
string reason = string.Empty;
string[] sourceFileInfo;
Int64 cnt = Directory.GetFiles(sourceFile).Length;
AddHeader mtx = new AddHeader();
if (cnt > 1)
{
reason = "MultipleFile";
mtx.CreateLog(reason);
}
else if (cnt == 0)
{
reason = "NoFile";
mtx.CreateLog(reason);
}
else
{
sourceFileInfo = Directory.GetFiles(sourceFile, "*.csv", SearchOption.TopDirectoryOnly);
foreach (string txtName in Directory.GetFiles(sourceFile, "*.csv"))
{
string sourceFileName = Path.GetFileName(txtName);
sourceFile = sourceFile + sourceFileName;
targetFile = targetFile + Path.GetFileNameWithoutExtension(txtName) + System.DateTime.UtcNow.ToString("-MMddyy-hhss") + ".csv";
StreamReader rd = new StreamReader(headerFile, true);
csvContent = rd.ReadToEnd();
rd.Close();
rd = new StreamReader(sourceFile, true);
csvContent = csvContent.ToString() + "\n" + rd.ReadToEnd();
rd.Close();
StreamWriter wr = new StreamWriter(targetFile, false);
StringBuilder sb = new StringBuilder(csvContent);
wr.Write(sb.ToString());
sb.Clear();
wr.Close();
//first, delete target archive file if exists, as File.Move() does not support overwrite
archiveFile = archiveFile + sourceFileName;
if (File.Exists(archiveFile))
{
File.Delete(archiveFile);
}
File.Move(sourceFile, archiveFile);
reason = "Success";
mtx.CreateLog(reason, sourceFileName, targetFile);
}
}
}
public void CreateLog(string _reason, string _sourceFileName = "", string _targetFile = "")
{
string logFile = ConfigurationManager.AppSettings["logFilePath"];
StreamWriter log;
FileStream fileStream = null;
DirectoryInfo logDirInfo = null;
FileInfo logFileInfo;
logFile = logFile + "Log-Metrix-" + System.DateTime.Today.ToString("MM-dd-yyyy") + "." + "txt";
logFileInfo = new FileInfo(logFile);
logDirInfo = new DirectoryInfo(logFileInfo.DirectoryName);
if (!logDirInfo.Exists) logDirInfo.Create();
if (!logFileInfo.Exists)
{
fileStream = logFileInfo.Create();
}
else
{
fileStream = new FileStream(logFile, FileMode.Append);
}
log = new StreamWriter(fileStream);
if (_reason == "NoFile")
{
log.WriteLine(System.DateTime.UtcNow.ToString() + "- " + "no file exist in the incoming folder");
}
else if (_reason == "MultipleFile")
{
log.WriteLine(System.DateTime.UtcNow.ToString() + "- " + "more than 1 file present in incoming folder, place only 1 file at a time");
}
else if (_reason == "Success")
{
log.WriteLine(System.DateTime.UtcNow.ToString() + "- " + "Header appended and file moved to Archive. " + "incoming file - " + _sourceFileName + " target file - " + Path.GetFileName(_targetFile));
}
log.Close();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Configuration;
namespace Header
{
class AddHeader
{
static void Main(string[] args)
{
string sourceFile = ConfigurationManager.AppSettings["sourceFilePath"];
string targetFile = ConfigurationManager.AppSettings["targetFilePath"];
string headerFile = ConfigurationManager.AppSettings["headerFilePath"];
string archiveFile = ConfigurationManager.AppSettings["archiveFilePath"];
string csvContent = string.Empty;
string reason = string.Empty;
string[] sourceFileInfo;
Int64 cnt = Directory.GetFiles(sourceFile).Length;
AddHeader mtx = new AddHeader();
if (cnt > 1)
{
reason = "MultipleFile";
mtx.CreateLog(reason);
}
else if (cnt == 0)
{
reason = "NoFile";
mtx.CreateLog(reason);
}
else
{
sourceFileInfo = Directory.GetFiles(sourceFile, "*.csv", SearchOption.TopDirectoryOnly);
foreach (string txtName in Directory.GetFiles(sourceFile, "*.csv"))
{
string sourceFileName = Path.GetFileName(txtName);
sourceFile = sourceFile + sourceFileName;
targetFile = targetFile + Path.GetFileNameWithoutExtension(txtName) + System.DateTime.UtcNow.ToString("-MMddyy-hhss") + ".csv";
StreamReader rd = new StreamReader(headerFile, true);
csvContent = rd.ReadToEnd();
rd.Close();
rd = new StreamReader(sourceFile, true);
csvContent = csvContent.ToString() + "\n" + rd.ReadToEnd();
rd.Close();
StreamWriter wr = new StreamWriter(targetFile, false);
StringBuilder sb = new StringBuilder(csvContent);
wr.Write(sb.ToString());
sb.Clear();
wr.Close();
//first, delete target archive file if exists, as File.Move() does not support overwrite
archiveFile = archiveFile + sourceFileName;
if (File.Exists(archiveFile))
{
File.Delete(archiveFile);
}
File.Move(sourceFile, archiveFile);
reason = "Success";
mtx.CreateLog(reason, sourceFileName, targetFile);
}
}
}
public void CreateLog(string _reason, string _sourceFileName = "", string _targetFile = "")
{
string logFile = ConfigurationManager.AppSettings["logFilePath"];
StreamWriter log;
FileStream fileStream = null;
DirectoryInfo logDirInfo = null;
FileInfo logFileInfo;
logFile = logFile + "Log-Metrix-" + System.DateTime.Today.ToString("MM-dd-yyyy") + "." + "txt";
logFileInfo = new FileInfo(logFile);
logDirInfo = new DirectoryInfo(logFileInfo.DirectoryName);
if (!logDirInfo.Exists) logDirInfo.Create();
if (!logFileInfo.Exists)
{
fileStream = logFileInfo.Create();
}
else
{
fileStream = new FileStream(logFile, FileMode.Append);
}
log = new StreamWriter(fileStream);
if (_reason == "NoFile")
{
log.WriteLine(System.DateTime.UtcNow.ToString() + "- " + "no file exist in the incoming folder");
}
else if (_reason == "MultipleFile")
{
log.WriteLine(System.DateTime.UtcNow.ToString() + "- " + "more than 1 file present in incoming folder, place only 1 file at a time");
}
else if (_reason == "Success")
{
log.WriteLine(System.DateTime.UtcNow.ToString() + "- " + "Header appended and file moved to Archive. " + "incoming file - " + _sourceFileName + " target file - " + Path.GetFileName(_targetFile));
}
log.Close();
}
}
}