java获取文件类型
❶ java 读取自定义类型文件
int数据是32位的,也就是4个字节的内容,sm文件中的channels是4个字节吗?如果是1、2的话估计不大可能用int,试试short
----补充---------------------------------------------
因为我没见过此类文件,具体的也不好说,
不过看你的[B@1fe571f好像是直接将一个没有覆盖toString()方法的对象打印出来,也就是调的Object的toString()方法,检查下你的代码,是不是类型转换的时候出问题了
继续补充————————
刚才试了下
byte a[]="aaaa".getBytes();
System.out.println(a);
输出的是[B@4f1d0d,证明你的代码是有问题的,将byte数组转换为String输出应该是System.out.println(new String(a));
❷ 用Java实现获取文件类型的方法。
主要以下几种方法:
这个MimetypesFileMap类会映射出一个file的Mime Type,这些Mime Type类型是在activation.jar包里面的资源文件中定义的
importjavax.activation.MimetypesFileTypeMap;
importjava.io.File;
classGetMimeType{
publicstaticvoidmain(Stringargs[]){
Filef=newFile("test.gif");
System.out.println("MimeTypeof"+f.getName()+"is"+
newMimetypesFileTypeMap().getContentType(f));
//expectedoutput:
//"MimeTypeoftest.gifisimage/gif"
}
}
使用 java.net.URL
警告:这个方法非常慢
与上面所说的匹配后缀名类似。后缀名和mime-type的映射关系被定义在[jre_home]libcontent-types.properties这个文件中
importjava.net.*;
publicclassFileUtils{
publicstaticStringgetMimeType(StringfileUrl)
throwsjava.io.IOException,MalformedURLException
{
Stringtype=null;
URLu=newURL(fileUrl);
URLConnectionuc=null;
uc=u.openConnection();
type=uc.getContentType();
returntype;
}
publicstaticvoidmain(Stringargs[])throwsException{
System.out.println(FileUtils.getMimeType("file://c:/temp/test.TXT"));
//output:text/plain
}
}
还有一种方式:就是取文件名最后一个“.”后的内容,通过人来判断如
String fileName = "aaa.txt";
String fileType =“txt”//通过方法取出方法类型为
String type = "";
if( fileTyep.equals("txt")){
type = "记事本";
}else if(fileTyep.equals("img")){
type = "img图片";
}。。。。。
❸ Java如何获取文件的内容类型
如果是要获取文件的类型格式的,先取得文件的名字,然后通过字符串截取(从最后一一个点开始截取)。
File file =new File("");
String fileName=File.getName();
fileName.subString(fileName.lastIndexOf("."));
❹ 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);
}
}
❺ java怎么获取文件编码格式
没错,就这样做,文件格式和文件内容,不是这样的。
普通文件,开始就是文件内容了。
有编码的,开头先是编码的定义,正如判断语句所写的那样
❻ java怎么获取文件的mime类型
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。这是我在网络上摘抄的一段介绍,具体大家可以去网络查阅。
好,我们现在就来看看如何使用java获取文件的Content-Type的值,那么按照我的习惯,先来上代码:
30
import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;/** * 测试类 * @author ZY * */public class MIME_Demo { public static void main(String[] args) throws Exception { System.out.println(getContentType("F:/test.png")); System.out.println(getContentType("F:/2.doc")); System.out.println(getContentType("F:/2.csv")); System.out.println(getContentType("F:/LiveUpdate.exe")); System.out.println(getContentType("F:/1.txt")); System.out.println(getContentType("F:/demo.jpg")); } public static String getContentType(String filename){ String type = null; Path path = Paths.get(filename); try { type = Files.probeContentType(path); } catch (IOException e) { e.printStackTrace(); } return type; }}
这段代码的执行结果为:
image/png
application/msword
application/vnd.ms-excel
application/x-msdownload
text/plain
image/jpeg
❼ Java中怎么获取文件类型
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class CheckFileType extends JFrame {
/**
*
*/
private static final long serialVersionUID = -6167144370965431657L;
private JPanel contentPane;
private JTextField textField;
private JTextArea textArea;
/**
* Create the frame.
*/
public CheckFileType() {
setTitle("\u5224\u65AD\u6587\u4EF6\u7C7B\u578B");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 501, 143);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel label = new JLabel("\u9009\u62E9\u6587\u4EF6\uFF1A");
label.setBounds(10, 10, 84, 15);
contentPane.add(label);
textField = new JTextField();
textField.setBounds(88, 2, 289, 30);
contentPane.add(textField);
textField.setColumns(10);
JButton button = new JButton("\u6D4F\u89C8\u2026\u2026");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
button.setBounds(389, 2, 90, 30);
contentPane.add(button);
textArea = new JTextArea();
textArea.setOpaque(false);
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setBounds(83, 37, 396, 60);
contentPane.add(textArea);
}
protected void do_button_actionPerformed(ActionEvent e) {
Scanner scan = new Scanner(getClass()// 获取说明文件的扫描器 在文件中获得
.getResourceAsStream("extName.inf"));
JFileChooser chooser = new JFileChooser();// 创建文件选择器
boolean searched = false;
int option = chooser.showOpenDialog(this);// 打开文件选择对话框
if (option == JFileChooser.APPROVE_OPTION) {// 如果正确选择文件
File file = chooser.getSelectedFile();// 获取用户选择文件
textField.setText(file.getName());// 把文件名添加到文本框
String name = file.getName();// 获取文件名
while (scan.hasNextLine()) { // 遍历说明文件
String line = scan.nextLine();// 获取一行说明信息
String[] extInfo = line.split("\t");// 把单行说明信息拆分成数组
// 数组第一个元素是文件扩展名,与用户选择文件名对比
if (name.endsWith(extInfo[0])) {
// 第二个数组元素是文件类型的说明信息,添加到文本域控件中
textArea.setText(extInfo[1]);
searched = true;
}
}
scan.close();// 关闭扫描器
}
if (!searched) {// 如果没找到相关文件类型的说明,则提示用户
textArea.setText("你选择的文件类型没有相应记录,你可以在extName.info文件中添加该类型的描述。");
}
}
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
EventQueue.invokeLater(new Runnable() {
public void run() {
CheckFileType frame = new CheckFileType();
frame.setVisible(true);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
辅助文件
.txt您选择的是计算机中的文本文件,值包含文本内容,没有特殊格式代码,用任何文档编辑器都可以打开。
.ini程序的配置文件,是针对某个应用程序所附带的配置信息。
.exeWindows系统中的可执行文件,是程序的入口,可以直接执行,不需要其他辅助工具。
.doc文档文件,Word97-2003都使用这种格式
.docx文档文件,Word2007采用这种格式。
.bmp位图图片文件,用于保存位图的图像,是Windows系统默认支持的一种图片格式。
.jpg压缩格式的图片文件,它的提及更小,更加利于网络传输或作为网页点缀。
.jpeg压缩格式的图片文件,它的提及更小,更加利于网络传输或作为网页点缀。
.dllWindows系统中的动态链接库文件,它是应用程序的扩展,为程序提供更多的功能模块。
.phpPhp开发的网页文件。
.jspJava开发的网页文件。
.javaJava语言的源代码文件。
.rar压缩文档文件,其格式为RAR,是一种非常流行的压缩格式,压缩率很高,而且可以为压缩文档设置密码,可以创建自解压的压缩文档。
❽ java如何通过文件描述符获取文件类型
主要以下几种方法:
这个MimetypesFileMap类会映射出一个file的Mime Type,这些Mime Type类型是在activation.jar包里面的资源文件中定义的
import javax.activation.MimetypesFileTypeMap;
import java.io.File;
class GetMimeType {
public static void main(String args[]) {
File f = new File("test.gif");
System.out.println("Mime Type of " + f.getName() + " is " +
new MimetypesFileTypeMap().getContentType(f));
// expected output :
// "Mime Type of test.gif is image/gif"
}
}
使用 java.net.URL
警告:这个方法非常慢
与上面所说的匹配后缀名类似。后缀名和mime-type的映射关系被定义在[jre_home]\lib\content-types.properties这个文件中
import java.net.*;
public class FileUtils{
public static String getMimeType(String fileUrl)
throws java.io.IOException, MalformedURLException
{
String type = null;
URL u = new URL(fileUrl);
URLConnection uc = null;
uc = u.openConnection();
type = uc.getContentType();
return type;
}
public static void main(String args[]) throws Exception {
System.out.println(FileUtils.getMimeType("file://c:/temp/test.TXT"));
// output : text/plain
}
}
还有一种方式:就是取文件名最后一个“.”后的内容,通过人来判断如
String fileName = "aaa.txt";
String fileType =“txt”//通过方法取出方法类型为
String type = "";
if( fileTyep.equals("txt")){
type = "记事本";
}else if(fileTyep.equals("img")){
type = "img图片";
}