.jrn ファイル (ATM マシン内) から更新されたデータを読み取り、そのテキストを一時テキスト ファイル "tempfile.txt" にコピーする Windows アプリケーションを開発しました。
「tempfile.txt」を読み取り、その内容を CCTV カメラに表示する「POS Text Sender」と呼ばれる別のサードパーティ アプリケーションがあります。
問題は、tempfile に何かを直接入力すると、POS アプリケーションがそれを読み取ることですが、アプリケーションがテキストを「tempfile」に書き込むと、tempfile の .jrn ファイルと同じ内容を見ることができますが、そうではありません。新しく生成されたファイルから tempfile にデータがコピーされるたびに、POS アプリケーションに反映されます。新しく生成されたファイルから最初のデータが tempfile にコピーされた後に POS Text Sender を再起動すると、POS Text Sender は、新しく作成されたファイルのコンテンツが書き込まれるまでコンテンツを表示します。一時ファイルへ
私のアプリケーション コードは、StreamReader を使用して .jrn ファイルを読み取り、それを文字列変数に割り当ててから、StreamWriter を使用して一時ファイルに書き込みます。ファイルに手動でテキストを入力することと、.NET StreamWriter がファイルにテキストを書き込むことの違いは何ですか?
コード:
DateTime LastChecked = DateTime.Now;
try
{
string[] files = System.IO.Directory.GetFiles(@"C:\Test", "*.jrn", System.IO.SearchOption.AllDirectories);
foreach (string file in files)
{
if (!fileList.Contains(file))
{
currentfilename = file;
fileList.Add(file);
copywarehouse(file);
//do_some_processing();
try
{
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader(file))
{
currentcontent=sr.ReadToEnd();
// Read and display lines from the file until the end of
//// the file is reached.
//while ((currentcontent = sr.ReadLine()) != null)
//{
//}
sr.Close();
//sr.Dispose();
}
}
catch (Exception)
{
// Let the user know what went wrong.
}
}
}
//checking
try
{
using (StreamReader sr = new StreamReader(currentfilename))
{
string currentfilecontent = sr.ReadToEnd();
sr.Close();
//sr.Dispose();
if (currentfilecontent!=currentcontent)
{
if (currentfilecontent.Contains(currentcontent))
{
string originalcontent = currentfilecontent.Substring(currentcontent.Length);
System.IO.StreamWriter filenew = new System.IO.StreamWriter(@"C:\Test\tempfile.txt");
filenew.WriteLine(originalcontent);
filenew.Close();
currentcontent = currentfilecontent;
}
}
}
}
catch (Exception)
{
// Let the user know what went wrong.
}
copywarehouse
方法:
private void copywarehouse(string filename)
{
string sourcePath = @"C:\Test";
string targetPath = @"C:\Test";
try
{
string sourceFile = System.IO.Path.Combine(sourcePath, filename);
string destFile = System.IO.Path.Combine(targetPath, "tempfile.txt");
System.IO.File.Copy(sourceFile, destFile, true);
}
catch (Exception)
{
}
}