當前位置:首頁 » 編程語言 » java判斷文件的類型

java判斷文件的類型

發布時間: 2023-08-24 07:18:35

『壹』 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代碼怎麼判斷文件的格式是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 程序中如何實現對RAR壓縮包文件中文件格式的判斷

分類: 電腦/網路 >> 程序設早辯計 >> 其他編程語言
問題描述:

JAVA 程序中如碼睜姿何實現對RAR壓縮包文件中文件格式的判斷?

解析:

JAVA中使用java.util.zip.ZipOutputStream在對文件進行壓縮時,將把每一個文件實體封裝為java.util.zip.ZipEntry,反之,在使用java.util.zip.ZipInputStream在對文件進行解壓縮時,每個文件遲絕的訪問也是通過訪問ZipEntry對象來操作的,可以通過ZipEntry對象的getName()來得到當初壓縮時對該文件的命名(通常為該文件相對路徑),當然得到了該文件命名自然就可以對文件格式進行判斷了!

『肆』 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包裡面的資源文件中定義的

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 判斷文件類型

簡單實現如下:
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判斷一個url是不是PDF類型的文件

我不知道該如何判斷  但我有一個很笨的方法
如果是一個下載文件 後台會有下面的操作(J2EE,其他平台也一樣,答改重點是括弧裡面的參數)
res.setContentType("application/x-download;charset=gbk");
res.setHeader("Content-Disposition" ,"attachment;filename=test.pdf");
得到鏈接之後需要訪問每個鏈接 使用socket的輸入流獲差悄取每個鏈接的頭信息  根據頭信息判斷是否為pdf文件
但這樣有一個bug  有些網站給文件取名字不一定就是以真正文件的後綴名結尾 
其次 一些壓縮文件裡面可能也有pdf文清慶判件  這樣的pdf文件是搜索不出來的

熱點內容
安卓哪個國家免費用 發布:2025-02-04 22:39:54 瀏覽:59
電腦配置低但想玩小偷模擬器怎麼辦 發布:2025-02-04 22:39:03 瀏覽:233
最快腳本語言 發布:2025-02-04 22:27:23 瀏覽:526
安卓的人臉識別在哪裡 發布:2025-02-04 22:16:45 瀏覽:674
悠然伺服器的ip是什麼 發布:2025-02-04 22:10:17 瀏覽:65
3des源碼 發布:2025-02-04 22:09:16 瀏覽:809
如何備份資料庫表 發布:2025-02-04 22:09:07 瀏覽:294
如何刪除下載的鬧鍾鈴聲安卓 發布:2025-02-04 22:03:35 瀏覽:658
死神腳本 發布:2025-02-04 21:57:03 瀏覽:168
phpposthtml 發布:2025-02-04 21:37:46 瀏覽:89