導航:首頁 > 編程語言 > java獲取文件的類型的文件

java獲取文件的類型的文件

發布時間:2023-07-15 16:51:47

『壹』 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 傳輸 獲取文件類型

獲取文件類型,一般的是列出目前所有的文件類型,根據表頭進行相應判斷,示例如下:

/**
*件頭是位於文件開頭的一段承擔一定任務的數據,一般都在開頭的部分。
*頭文件作為一種包含功能函數、數據介面聲明的載體文件,用於保存程序的聲明(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實現獲取文件類型的方法。

主要以下幾種方法:

這個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實現獲取指定路徑下的指定格式的文件

獲取指定路徑下的指定格式的文件

package filenameFilter;

import java io File;

/* * 實現功能 *

獲取指定路徑下的指定格式的文件

* */

public class Test {

public static void listPath(File file) {

// 接收篩選過後的文件對象數組

//用文件對象調用listFiles(FilenameFilter filter) 方法

//返回抽象路徑名數組 這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄

File files[] = file listFiles(new MyFilenameFilter())

/*//遍歷出指定文件路徑下符合條件的文件

for (File f : files) {

System out println(f)

}*/

//遍歷出指定文件路徑下的所有符合篩選條件的文件

for(File f: files){

if(f isDirectory()){

listPath(f)

}else{

System out println(f)

}

}

}

public static void main(String[] args) {

// 創建指定目錄的文件對象

File file = new File( F:\test )

// 調用文件曬篩選的方法 並將文件對象出入

listPath(file)

} }

package filenameFilter;

import java io File;

import java io FilenameFilter;

//實現FilenameFilter介面 可用於笑答過濾器文件名 //本方法實現的岩判是篩選指定格式結尾的文件 public class MyFilenameFilter implements FilenameFilter {

/**

* @param args

*

*

實現功能 實現FilenameFilter介面 定義出指定的文件篩選器

*

*/

@Override

//重寫accept方法 測試指定文件是否應該包含在某一文件列表中

public boolean accept(File dir String name) {

// TODO Auto generated method stub

// 創建返回值

boolean flag = true;

// 定粗升改義篩選條件

//endWith(String str) 判斷是否是以指定格式結尾的

if (name toLowerCase() endsWith( jpg )) {

} else if (name toLowerCase() endsWith( txt )) {

} else if (name toLowerCase() endsWith( gif )) {

} else {

flag = false;

}

// 返回定義的返回值

//當返回true時 表示傳入的文件滿足條件

return flag;

}

lishixin/Article/program/Java/hx/201311/26918

『伍』 java如何獲取文件信息

File 類是對文件和文件夾的抽象,包含了對文件和文件夾的多種屬性和操作方法。File類的常用方法如下表:

返回
方法
說明

String getName 獲取文件名稱
String getParent 獲取文件的父路徑字元串
String getPath 獲取文件的相對路徑字元串
String getAbsolutePath 獲取文件的絕對路徑字元串
boolean exists 判斷文件或者文件夾是否存在
boolean isFile 判斷是不是文件類型
boolean isDirectory 判斷是不是文件夾類型
boolean delete 刪除文件或文件夾,如果刪除成功返回結果為true
boolean mkdir 創建文件夾,創建成功返回true
boolean setReadOnly 設置文件或文件夾的只讀屬性
long length 獲取文件的長度
long lastModified 獲取文件的最後修改時間
String[ ] list 獲取文件夾中的文件和子文件夾的名稱,並存放到字元串數組中

『陸』 JAVA中讀取文件(二進制,字元)內容的幾種方

JAVA中讀取文件內容的方法有很多,比如按位元組讀取文件內容,按字元讀取文件內容,按行讀取文件內容,隨機讀取文件內容等方法,本文就以上方法的具體實現給出代碼,需要的可以直接復制使用

public class ReadFromFile {
/**
* 以位元組為單位讀取文件,常用於讀二進制文件,如圖片、聲音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以位元組為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個位元組
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println("以位元組為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個位元組
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 讀入多個位元組到位元組數組中,byteread為一次讀入的位元組數
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}

/**
* 以字元為單位讀取文件,常用於讀文本,數字等類型的文件
*/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
System.out.println("以字元為單位讀取文件內容,一次讀一個位元組:");
// 一次讀一個字元
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// 對於windows下,\r\n這兩個字元在一起時,表示一個換行。
// 但如果這兩個字元分開顯示時,會換兩次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否則,將會多出很多空行。
if (((char) tempchar) != '\r') {
System.out.print((char) tempchar);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("以字元為單位讀取文件內容,一次讀多個位元組:");
// 一次讀多個字元
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 讀入多個字元到字元數組中,charread為一次讀取字元數
while ((charread = reader.read(tempchars)) != -1) {
// 同樣屏蔽掉\r不顯示
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != '\r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}

} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}

/**
* 以行為單位讀取文件,常用於讀面向行的格式化文件
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行為單位讀取文件內容,一次讀一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null為文件結束
while ((tempString = reader.readLine()) != null) {
// 顯示行號
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}

/**
* 隨機讀取文件內容
*/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
System.out.println("隨機讀取一段文件內容:");
// 打開一個隨機訪問文件流,按只讀方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件長度,位元組數
long fileLength = randomFile.length();
// 讀文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 將讀文件的開始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次讀10個位元組,如果文件內容不足10個位元組,則讀剩下的位元組。
// 將一次讀取的位元組數賦給byteread
while ((byteread = randomFile.read(bytes)) != -1) {
System.out.write(bytes, 0, byteread);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (randomFile != null) {
try {
randomFile.close();
} catch (IOException e1) {
}
}
}
}

/**
* 顯示輸入流中還剩的位元組數
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("當前位元組輸入流中的位元組數為:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}

閱讀全文

與java獲取文件的類型的文件相關的資料

熱點內容
mac系統本身編譯器 瀏覽:147
頭條app如何設置橫屏模式 瀏覽:357
clion怎麼使用終端編譯 瀏覽:766
伺服器地址部署到公網 瀏覽:492
新桑塔納安卓大屏導航怎麼拆 瀏覽:382
程序員送給女友的禮物 瀏覽:430
ftp命令行查看文件數量 瀏覽:496
linux查看設備的命令 瀏覽:827
pythongolang學哪個 瀏覽:349
金蝶加密鎖驅動下載 瀏覽:300
python編程基於自然語言處理庫 瀏覽:133
javaseruntime 瀏覽:902
cad如何將命令放在滑鼠旁邊 瀏覽:746
程序員對粉色 瀏覽:125
編譯器命令java 瀏覽:989
雲伺服器怎麼數據同步 瀏覽:685
c盤文件修復命令語 瀏覽:966
文件夾中文件怎麼上下移動 瀏覽:831
魅族手機用什麼軟體解壓 瀏覽:763
加密幣糖果 瀏覽:300