如何解决如何重复生成同名的输出文件
我有一个服务,可以为每次迭代运行生成多个输出文件。它每天运行一次。输出文件名始终不变,旧文件被删除,然后被新文件替换。 例如:
- abc.txt
- def.txt
- ghi.txt
- abc.txt
- def.txt
- ghi.txt
我正在使用以下函数来实现我所说的。
<?PHP
header('Access-Control-Allow-Origin: *');
require_once "DbConnect.PHP";
echo "ahoj";
...
这很好用,但我确信上面的代码片段必须有更好/优化/改进的代码。所以请让我知道您的建议。
谢谢。
解决方法
一个建议是将包含对 File.CreateText 和 FileAppendText 的调用的 IF 块替换为对 StreamWriter 的单个调用。这两种方法都是调用 StreamWriter 的包装器方法。唯一不同的是它们为 append 标志传入的内容。在您的情况下,如果文件存在或以其他方式创建文件,则附加值将为真。
示例 1:
//Check if file exists if yes then compare last modified date and delete the older file
if (File.Exists(filePath))
{
DateTime dateTime = File.GetLastWriteTime(filePath);
if (dateTime < System.DateTime.Now.AddHours(-5))
{
File.Delete(filePath);
}
}
using (StreamWriter sw = new StreamWriter(filePath,true))
sw.WriteLine(Message);
示例 2: 利用其他文件访问选项:
using (FileStream fs = new FileStream(filePath,// File full path
FileMode.Append,// Open for append or create
FileAccess.Write,// Write mode only
FileShare.ReadWrite)) // Open for Shared Read/Write access
using (StreamWriter sw = new StreamWriter(fs))
sw.WriteLine(Message);
有关 File.CreaeText 和 File.AppendText 源代码实现,请参见 File.cs。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。