首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.csv与假.csv的鉴别

.csv与假.csv的鉴别
EN

Stack Overflow用户
提问于 2013-03-18 10:04:31
回答 2查看 170关注 0票数 1

我有一个上传CSV文件的方法。当我处理任何普通的CSV文件时,它都可以正常工作。

当它还读取任何重命名为.csv作为文件扩展名的文件(例如,PDF),并且不抛出任何异常时,就会出现问题。

有人能帮我区分真正的CSV文件和带有.csv文件扩展名的“假”CSV文件吗?

更新意见如下:

这里是我的代码:

代码语言:javascript
复制
CsvReader csvReader = new CsvReader();
ArrayList <ArrayList<String>> arrData=null;
String path="C:/Users/Avinash/Desktop/asset.csv";
arrData=CsvReader.readCsv(path,printinconsole);

如果asset.csv是一个真正的CSV文件,那么上面的代码工作得很好。但是任何其他格式文件(比如asset.pdf)都被重命名为asset.csv,它不会抛出任何异常,而是读取垃圾值。

有人能帮助区分这两种不同的文件类型吗?

我尝试过jMimeMagic,但它未能给出Office中所有电子表格的正确MIME类型。

EN

回答 2

Stack Overflow用户

发布于 2013-03-20 08:12:50

如何区分真正的CSV文件和带有.csv文件扩展名的“假”CSV文件?

您不能以直接的方式这样做,因为每个文件都可以被解释为CSV文件(用换行符分隔的记录,用逗号分隔的字段,所以即使使用某些字符集的二进制文件也可以被读取为“有效”CSV文件)。例如,如果文件不包含任何换行符或逗号字符,您将得到包含整个文件的单个记录/字段结果。

为了检查它是否是一个有效的CVS文件(对于您的用例),您需要使用一些约束来验证已经从CSV文件读取的结果,这些约束是您知道您的特定数据需要完成的。例如,你可以

  • 验证标题/标题值
  • 验证每个记录中所期望的字段数。
  • 验证最大/最小字段长度和记录长度
  • 验证字符集-您的数据是否包含无效字符?
  • 验证字段数据是否在特定范围内?

顺便说一句:您无论如何都应该执行这些验证,以避免恶意数据被导入到应用程序中。

票数 4
EN

Stack Overflow用户

发布于 2013-03-20 08:12:06

许多文件格式都有一个特殊的头,一个简短的字节序列,用作类型签名。这就是Linux如何区分文本文件和图像,而不需要特定的文件扩展名。

在Java中,您可以使用来自javax.activation的实用程序类。给出了一个完整的例子这里

如果您的文本文件被标识为text/csv (或者文本/纯文本),那么您可以尝试将其解析为文本/csv。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15474080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档