当前位置:首页 » 编程语言 » java判断文件类型

java判断文件类型

发布时间: 2023-04-01 13:20:21

java web 怎么识别文件的类型

java web识纯蠢别文件的类型是通过文件后缀识别的。

1、做答陪写一个识别文件类型的方法:

public String (final String fileName) {

String fileType = "Undetermined";

final File file = new File(fileName);

try {

fileType = Files.probeContentType(file.toPath());举银

} catch (IOException ioException) {

out.println( "ERROR: Unable to determine file type for " + fileName + " e to exception " + ioException);

}

return fileType;

}

2、最常见的文件类型:

⑵ java代码怎么判断文件的格式是excel文件

匹配后缀名。

String.endsWith(".xls");
xls
xlsx
xlsm

1.两点需要注意

1.string.spilt("\.")分割字符串成子字符串数组,以“.”分割,必须写成string.spilt("\.")的方式,不能写成string.spilt(".")。斜线必须是反斜线且。

2.获取分割后的字符串数组,要获得最后一个item的index ,方式是int suffixIndex = strArray.length -1;

publicStringgetFileType(StringfileName){
String[]strArray=fileName.split("\.");
intsuffixIndex=strArray.length-1;
System.out.println(strArray[suffixIndex]);
return"strArray[suffixIndex]";
}

⑶ Java判断文件类型是二进制文件还是文本文件

下面转载一下别人的方法

1、判断字符范围。
该方式主要是帆镇针对英文字符的,如果文件中有中文字符就会判断失败。比如:

char c;
f.read(&c, sizeof(c));
if (c < 32 && c != 9 && c != 10 && c != 13)
{
return;
}

该方式针对256以下的字符问题都不大,一旦遇到双字节中文就会出现c为负数的情况,导致判断烂轿搏失败。

2、判断有没有char(0)字符。
二进制文件基本上都会饥祥有char(0),注意,是“基本上” 。
我尝试通过这个方式来判断,发现判断正确率很高,我手头的二进制STL文件都能够判断正确,但是总觉得这种方式不够保险,如果刚好某个二进制文件没有char(0)怎么办???

3、文件大小对比法。
以文本方式 打开文件,取一段数据(比如1024字节),存为string,再写入tmp文件,如果新文件的大小还是1024字节,应该就是文本文件了。否则就是二进制文件。
该方法我没有认证,但是纯粹从描述上来说,还是比较有效的。以我的理解,该方法在本质上还是方法1和方法2的结合,相比方法1来说,方便了中文字符的判断,相比方法2来说,更为保险一些。其本质就是通过将二进制文件转换为字符串,将一些无效字符过滤掉(比如char(0),回车等等),导致大小发生变化。但同样的该方法也有漏洞,如果二进制文件中刚好没有回车,没有char(0)怎么办???

4、无效字符比例法。
该方法是基于方法1的一种概率判断,遍历文件中的所有字符,对方法1中认定的无效字符进行计数,如果无效字符数量达到一定比例(这个比例值是经验值,根据自己的程序运行环境自由设定),则认为是二进制文件。
同方法1一样,无法对中文字符进行有效的判断,一个全为中文的文本文件,肯定会被认定为二进制文件。

5、严格对比法。
逐字节读取,然后满足以下任何一个条件那么就是二进制文件:
1)所读取字节大于127并且小于160;
2)所读取字节大于等于160并且不成对出现;(注:大于等于160并成对出现的是汉字,其他UNICODE字符集编码格式不是很清楚)
3)所读取字节小于32并且不等于9(TAB)、10(换行) (注: 10 是UNIX格式文本换行)
4)所读取字节小于32并且等于13(回车)但是之后的字节并不是10(换行) (注:13 10 是DOS格式文本换行)
该方法是最严谨的,也是判断最复杂的,效率最低的,一个较大的文件判断起来肯定会很慢。

⑷ JAVA 程序中如何实现对RAR压缩包文件中文件格式的判断

分类: 电脑/网络 >> 程序设早辩计 >> 其他编程语言
问题描述:

JAVA 程序中如码睁姿何实现对RAR压缩包文件中文件格式的判断?

解析:

JAVA中使用java.util.zip.ZipOutputStream在对文件进行压缩时,将把每一个文件实体封装为java.util.zip.ZipEntry,反之,在使用java.util.zip.ZipInputStream在对文件进行解压缩时,每个文件迟绝的访问也是通过访问ZipEntry对象来操作的,可以通过ZipEntry对象的getName()来得到当初压缩时对该文件的命名(通常为该文件相对路径),当然得到了该文件命名自然就可以对文件格式进行判断了!

⑸ java如何判断文件是否为图片

java中提供了ImageInputStream类来对文件是否为图片进行判断,示例如下:

/**
*判断文件是否为图片<br>
*<br>
*@parampInput文件名<br>
*@parampImgeFlag判断具体文件类型<br>
*@return检查后的结果<br>
*@throwsException
*/
publicstaticbooleanisPicture(StringpInput,
StringpImgeFlag)throwsException{
//文件名称为空的场合
if(Check.isNull(pInput)){
//返回不和合法
returnfalse;
}
//获得文件后缀名
StringtmpName=pInput.substring(pInput.lastIndexOf(".")+1,
pInput.length());
//声明图片后缀名数组
StringimgeArray[][]={
{"bmp","0"},{"dib","1"},{"gif","2"},
{"jfif","3"},{"jpe","4"},{"jpeg","5"},
{"jpg","6"},{"png","7"},{"tif","8"},
{"tiff","9"},{"ico","10"}
};
//遍历名称数组
for(inti=0;i<imgeArray.length;i++){
//判断单个类型文件的场合
if(!Check.isNull(pImgeFlag)
&&imgeArray[i][0].equals(tmpName.toLowerCase())
&&imgeArray[i][1].equals(pImgeFlag)){
returntrue;
}
//判断符合全部类型的场合
if(Check.isNull(pImgeFlag)
&&imgeArray[i][0].equals(tmpName.toLowerCase())){
returntrue;
}
}
returnfalse;
}

⑹ java 判断文件类型

简单实现如下:
import java.io.*;
/*通常用在从客户到服务端传送的判断
先用getName()获得文件的名字,这个市File的自带方法。然后那名字给一个String对象,用下面的方法得到文件的扩展名。

*/

public class Rename{

public String getTypeName(String s){
String s1=s.substring(s.indexOf(".")+1,s.length());
if(s1.indexOf(".")>=0){
s=s1;
Rename sf=new Rename();
s=sf.getTypeName(s);
}
return s.substring(s.indexOf("."),s.length());
}

}

⑺ java如何判断http链接是否是具体的文件

需要根据链接来获取文件类型,将内容正确存储

http://img12.360buyimg.com/da/20120330/88_31_ZySDre.jpg


这个链接指向的文件就是个jpg文件。但是州仿滑后来发现有诸如


http://jprice.360buyimg.com/getSkuPriceImgService.action?skuId=1850001109&origin=1&webSite=1&type=1的链接,这招就不灵了。后来谷歌网络了一下也没发现解决办法。后来机缘巧合在Java Network Programming上找到了一个办法:


URLConnection class provides two static methods to help programs figure out the MIME type of some data; you can use these if the content type just isn't available or if you have reason to believe that the content type you're given isn't correct。


就是说URLConnection提供了两种方法可以猜测(根据实测结果,这个猜测是相当的准)数据的MIME类型。


第一个是:


public static String guessContentTypeFromName(String name)


这个方法根据URL文册腊件部分的后缀名来判断类型,跟之前我的方法一样。这个不能解决上面那个问题。


第二个是:


public static String guessContentTypeFromStream(InputStream in)


这个方法是根据流的前面几个字节来判断类型,这个就不需要文件后缀名了,完全可以解大腔决上面那个问题。

⑻ java 传输 获取文件类型

获取文件类型,一般的是列出目前所有的文件类型,根据表头进行相应判断,示例如下:

/**
*件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。
*头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现(implementation)。
*为了解决在用户上传文件的时候在服务器端判断文件类型的问题,故用获取文件头的方式,直接读取文件的前几个字节,来判断上传文件是否符合格式。具体代码如下:
*Java代码:
*
*/
packagecom.yonyou.sud.file;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.util.HashMap;
/**
*获取和判断文件头信息
*
*@authorSud
*
*/
publicclassGetTypeByHead{
//缓存文件头信息-文件头信息
publicstaticfinalHashMap<String,String>mFileTypes=newHashMap<String,String>();
static{
//images
mFileTypes.put("FFD8FF","jpg");
mFileTypes.put("89504E47","png");
mFileTypes.put("47494638","gif");
mFileTypes.put("49492A00","tif");
mFileTypes.put("424D","bmp");
//
mFileTypes.put("41433130","dwg");//CAD
mFileTypes.put("38425053","psd");
mFileTypes.put("7B5C727466","rtf");//日记本
mFileTypes.put("3C3F786D6C","xml");
mFileTypes.put("68746D6C3E","html");
mFileTypes.put("44656C69766572792D646174653A","eml");//邮件
mFileTypes.put("D0CF11E0","doc");
mFileTypes.put("5374616E64617264204A","mdb");
mFileTypes.put("252150532D41646F6265","ps");
mFileTypes.put("255044462D312E","pdf");
mFileTypes.put("504B0304","docx");
mFileTypes.put("7221","rar");
mFileTypes.put("57415645","wav");
mFileTypes.put("41564920","avi");
mFileTypes.put("2E524D46","rm");
mFileTypes.put("000001BA","mpg");
mFileTypes.put("000001B3","mpg");
mFileTypes.put("6D6F6F76","mov");
mFileTypes.put("3026B2758E66CF11","asf");
mFileTypes.put("4D546864","mid");
mFileTypes.put("1F8B08","gz");
}
/**
*根据文件路径获取文件头信息
*
*@paramfilePath
*文件路径
*@return文件头信息
*/
publicstaticStringgetFileType(StringfilePath){
System.out.println(getFileHeader(filePath));
System.out.println(mFileTypes.get(getFileHeader(filePath)));
returnmFileTypes.get(getFileHeader(filePath));
}
/**
*根据文件路径获取文件头信息
*
*@paramfilePath
*文件路径
*@return文件头信息
*/
(StringfilePath){
FileInputStreamis=null;
Stringvalue=null;
try{
is=newFileInputStream(filePath);
byte[]b=newbyte[4];
/*intread()从此输入流中读取一个数据字节。
*intread(byte[]b)从此输入流中将最多b.length个字节的数据读入一个byte数组中。
*intread(byte[]b,intoff,intlen)从此输入流中将最多len个字节的数据读入一个byte数组中。
*/
is.read(b,0,b.length);
value=bytesToHexString(b);
}catch(Exceptione){
}finally{
if(null!=is){
try{
is.close();
}catch(IOExceptione){
}
}
}
returnvalue;
}
/**
*将要读取文件头信息的文件的byte数组转换成string类型表示
*
*@paramsrc
*要读取文件头信息的文件的byte数组
*@return文件头信息
*/
(byte[]src){
StringBuilderbuilder=newStringBuilder();
if(src==null||src.length<=0){
returnnull;
}
Stringhv;
for(inti=0;i<src.length;i++){
//以十六进制(基数16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写
hv=Integer.toHexString(src[i]&0xFF).toUpperCase();
if(hv.length()<2){
builder.append(0);
}
builder.append(hv);
}
System.out.println(builder.toString());
returnbuilder.toString();
}
publicstaticvoidmain(String[]args)throwsException{
finalStringfileType=getFileType("E:/Java编程思想读书笔记.docx");
System.out.println(fileType);
}
}
热点内容
mysql数据库名查看 发布:2024-11-02 16:37:38 浏览:702
怎么存储液氮 发布:2024-11-02 16:29:20 浏览:381
顺序存储文件 发布:2024-11-02 16:26:16 浏览:795
python266 发布:2024-11-02 16:22:06 浏览:364
计算机如何设置双密码 发布:2024-11-02 15:38:18 浏览:929
超高速存储 发布:2024-11-02 15:23:30 浏览:898
javades加密文件 发布:2024-11-02 15:14:15 浏览:534
读卡器怎么看配置 发布:2024-11-02 15:14:10 浏览:459
安卓手机如何更改屏幕常亮 发布:2024-11-02 15:14:02 浏览:605
存储空间介绍 发布:2024-11-02 15:12:22 浏览:417