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圖片";
}