How to find if the file is a CSV file?

Mit*_*hun 3 java csv web-applications

I have a scenario wherein the user uploads a file to the system. The only file that the system understands in a CSV, but the user can upload any type of file eg: jpeg, doc, html. I need to throw an exception if the user uploads anything other than CSV file.

Can anybody let me know how can I find if the uploaded file is a CSV file or not?

Vin*_*vic 7

CSV文件变化很大,它们都可以合法地称为CSV文件.

我猜你的方法不是最好的方法,正确的方法是判断上传的文件是否是应用程序可以解析的文本文件,而不是它是否为CSV.

无论何时无法解析文件,都会报告错误,无论是JPG,MP3还是CSV都无法解析.

要做到这一点,我会尝试找到一个库来解析各种CSV文件格式,否则你需要很长的路要走编写代码来解析许多可能类型的CSV文件(或者通过支持几种CSV格式来限制应用程序的灵活性.)

一个这样的Java库是opencsv


Jam*_*ong 6

如果你正在使用一些库CSV解析器,你所要做的就是捕获它抛出的任何错误.

如果您使用的CSV解析器具有远程可靠性,则在它不理解文件格式的情况下会抛出一些有用的错误.


Wil*_*urn 0

我能想到几种方法。

一种方法是尝试使用 UTF-8 解码文件。(它内置于 Java 中,并且可能也内置于 .NET 中。)如果文件正确解码,那么您至少知道它是某种文本文件。

一旦您知道它是一个文本文件,请解析每行中的各个字段并检查是否获得了预期的字段数。如果每行的字段数不一致,则您可能只有一个包含文本的文件,但未将其组织为行和字段。

否则你就有一个 CSV。然后您可以验证这些字段。