检查给定文件是否为使用Java的简单文本文件
我需要将大型文本文件导入数据库。 该文本文件的结构是使用几个分隔符和all预定义的。 我只需要检查给定的文件是否为文本文件(不考虑扩展名)检查给定文件是否为使用Java的简单文本文件,java,Java,我需要将大型文本文件导入数据库。 该文本文件的结构是使用几个分隔符和all预定义的。 我只需要检查给定的文件是否为文本文件(不考虑扩展名) 如何使用Java?我认为您能管理的最好方法是检查文件中的每个字节是否对应于您期望的字符集中的有效字符 例如,如果您认为这是一个UTF-8编码的文本文件,您可以尝试以下方法“验证”每个字节: try { Charset.availableCharsets().get("UTF-8").newDecoder() .decode(ByteBuf
如何使用Java?我认为您能管理的最好方法是检查文件中的每个字节是否对应于您期望的字符集中的有效字符 例如,如果您认为这是一个UTF-8编码的文本文件,您可以尝试以下方法“验证”每个字节:
try {
Charset.availableCharsets().get("UTF-8").newDecoder()
.decode(ByteBuffer.wrap(bytesFromFile));
// was valid
} catch (CharacterCodingException e) {
// wasn't valid
}
- 在独立Java应用程序中
- Java1.6或更低版本(
)Java.io.File
- Java 1.7或更高版本(
)-通过Java.nio.file.Path
- Java1.6或更低版本(
- 在框架无关的web应用程序中
- 使用第三方库,如回答中所述:
- 在Struts2 web应用程序中
- 通过支柱2
我忽略了所有基于文件扩展名的解决方案(通常不够可靠),以及一些替代的第三方库和旧的解决方案
请随时注意我可能忘记的内容,我很乐意将其包含在这里。您只需要确认它是一个文本文件,还是需要知道它符合您的预期结构?实际上,我关心我的代码,但这里我只需要帮助检查文本文件。在Web应用程序中还是在客户端上运行的Java应用程序中?@AndreaLigi操作系统我不明白您想问什么。但我正在开发web应用程序。通过浏览器文件将上载到服务器并导入到服务器上的数据库。所以我需要验证给定的文件。好的,然后通过HTTP。这实际上比在独立应用程序中更容易,而且大多数框架都有自己的实现来帮助您。a你在使用一个特定的框架,比如Struts2吗?谢谢…这看起来是个好主意,但是对于大文件来说逐字节检查不是个好主意。还有一个问题。其他的文本文件字符集是不同的?很好的解决方案…甚至可以供其他人将来参考。谢谢Andrea。。
File file = new File("/myFolder/myFile");
InputStream is = new BufferedInputStream(new FileInputStream(file));
String mimeType = URLConnection.guessContentTypeFromStream(is);
Path path = FileSystems.getDefault().getPath("myFolder", "myFile");
String mimeType = Files.probeContentType(path);
InputStream is = uploadedFile.getInputStream();
String mimeType = Magic.getMagicMatch(is, false).getMimeType();
<!--
Configured either
- globally to a package or
- locally to an Action
in Struts.xml
-->
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/png,image/gif,image/jpeg</param>
</interceptor-ref>
<input type="file" accept="image/*,video/*">