我开发了一个 Windows 应用程序,它将从 .jrn 文件(在 ATM 机中)读取更新的数据,并将文本复制到临时文本文件“tempfile.txt”。
还有另一个名为“POS Text Sender”的第三方应用程序,它读取“tempfile.txt”并将其内容显示在闭路电视摄像机中。
问题是,如果我直接在 tempfile 中键入内容,POS 应用程序会读取它,但如果我的应用程序将文本写入“tempfile”,我可以在 tempfile 中看到与 .jrn 文件中相同的内容,但事实并非如此当数据从新生成的文件复制到临时文件时反映在 POS 应用程序中。如果在从新生成的文件复制到临时文件的第一个数据后重新启动 POS 文本发送器,POS 文本发送器将显示内容直到新创建的文件中的内容被写入到临时文件
我的应用程序代码正在使用 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)
{
}
}