通过读取文件头部判断是否为CSV格式文件

本文介绍如何通过读取文件头部来正确判断一个文件是否为CSV格式,而非仅依赖文件后缀。这种方法能防止因文件后缀篡改导致的误解析,并有助于提升服务器安全性。
摘要由CSDN通过智能技术生成

通过读取文件头部判断是否为CSV格式文件

            通过读取CSV文件头,判断文件是是否属于CSV文件类型,一般而言仅仅只是通过文件后缀来判断该文件所属的类型,这样是不合理的,只要更改一下文件后缀就无法识别这个文件到底是不是正确的文件格式,把可执行的文件后缀改为.CSV如果是通过判断文件后缀来识别文件类型,这样肯定是行不通的,因为exe的文件格式肯定不是CSV的格式,如果提前判断出这个文件头的这样就能定位这个文件是不是我们所需要的文件类型,避免对错误的文件进行解析。同样也可以在某种程度上保护服务器的安全。

/*
 * System Abbrev :
 * system Name  :
 * Component No  :
 * Component Name:
 * File name     :Util.java
 * Author        :Qiuzhenping
 * Date          :2014-11-30
 * Description   :  <description>
 */

/* Updation record 1:
 * Updation date        :  2014-11-30
 * Updator          :  Qiuzhenping
 * Trace No:  <Trace No>
 * Updation No:  <Updation No>
 * Updation Content:  <List all contents of updation and all m
你可以使用System.IO.FileSystemWatcher类来监视文件夹中的更改,使用System.IO.File类来处理文件的读写操作,使用System.Timers.Timer类来定时执行任务。以下是示例代码: ```csharp using System; using System.IO; using System.Timers; namespace FileWatcher { class Program { static void Main(string[] args) { string sourceFolder = @"C:\SourceFolder"; // 源文件夹路径 string targetFolder = @"C:\TargetFolder"; // 目标文件夹路径 FileSystemWatcher watcher = new FileSystemWatcher(sourceFolder); watcher.Filter = "*.txt"; // 监视txt文件 watcher.IncludeSubdirectories = true; watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.CreationTime; watcher.Changed += new FileSystemEventHandler(OnChanged); watcher.Created += new FileSystemEventHandler(OnChanged); watcher.EnableRaisingEvents = true; Timer timer = new Timer(10000); // 每10秒执行一次任务 timer.Elapsed += new ElapsedEventHandler(OnTimerElapsed); timer.Start(); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } static void OnChanged(object sender, FileSystemEventArgs e) { if (e.ChangeType == WatcherChangeTypes.Created) { string filePath = e.FullPath; FileInfo fileInfo = new FileInfo(filePath); if ((fileInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { Console.WriteLine("File {0} is read-only.", filePath); } else { Console.WriteLine("File {0} is editable.", filePath); string content = File.ReadAllText(filePath); string newContent = "Your header information" + Environment.NewLine + content; string csvContent = newContent.Replace("\t", ","); // 将文本内容转为csv格式 string csvFilePath = Path.Combine(targetFolder, Path.GetFileNameWithoutExtension(filePath) + ".csv"); File.WriteAllText(csvFilePath, csvContent); } } } static void OnTimerElapsed(object sender, ElapsedEventArgs e) { Console.WriteLine("Timer elapsed."); } } } ``` 在上面的代码中,我们使用FileSystemWatcher类来监视源文件夹中的txt文件的更改,当有新文件生成时,判断该文件是否为只读文件,如果是可编辑文件,则在文件头部添加信息,并将其转为csv格式,保存到目标文件夹中。使用Timer类来定时执行任务,这里设置为每10秒执行一次。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值