當前位置:首頁 » 凈水方式 » 文件過濾器

文件過濾器

發布時間: 2020-12-20 13:08:55

Ⅰ java FileFilter 過濾只保留文件夾和.xls文件

代碼如下,供參考

import java.io.File;
import java.io.FileFilter;
public class Test {
public static void main(String[] args) {
File file = new File("E:\");
File[] files = file.listFiles(new FileFilter(){
@Override
public boolean accept(File pathname) {
// 判斷文件名是目錄 或 .xls 結尾
if (pathname.isDirectory() || pathname.getName().toUpperCase().endsWith(".XLS")) {
return true;
}
return false;
}});

for (File f : files) {
System.out.println(f.getName());
}
}
}

Ⅱ java項目和web項目中的過濾器文件怎麼使用

過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。在這之後,過濾器可以作如下的選擇:

1. 以常規的方式調用資源(即,調用servlet或JSP頁面)。
2.利用修改過的請求信息調用資源。
3. 調用資源,但在發送響應到客戶機前對其進行修改
4. 阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態代碼或生成替換輸出。

1. 建立基本過濾器
建立一個過濾器涉及下列五個步驟:
1)建立一個實現Filter介面的類。這個類需要三個方法,分別是:doFilter、init和destroy。
doFilter方法包含主要的過濾代碼(見第2步),init方法建立設置操作,而destroy方法進行清楚。
2)在doFilter方法中放入過濾行為。doFilter方法的第一個參數為ServletRequest對象。此對象給過濾器提供了對進入的信息(包括表單數據、cookie和HTTP請求頭)的完全訪問。第二個參數為ServletResponse,通常在簡單的過濾器中忽略此參數。最後一個參數為FilterChain,如下一步所述,此參數用來調用servlet或JSP頁。
3)調用FilterChain對象的doFilter方法。Filter介面的doFilter方法取一個FilterChain對象作為它的一個參數。在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。
4)對相應的servlet和JSP頁面注冊過濾器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。
5)禁用激活器servlet。防止用戶利用預設servlet URL繞過過濾器設置。
1.1 建立一個實現Filter介面的類
所有過濾器都必須實現javax.servlet.Filter。這個介麵包含三個方法,分別為doFilter、init和destroy。

public void doFilter(ServletRequset request,
ServletResponse response,
FilterChain chain)
thows ServletException, IOException

每當調用一個過濾器(即,每次請求與此過濾器相關的servlet或JSP頁面)時,就執行其doFilter方法。正是這個方法包含了大部分過濾邏輯。第一個參數為與傳入請求有關的ServletRequest。對於簡單的過濾器,大多數過濾邏輯是基於這個對象的。如果處理HTTP請求,並且需要訪問諸如getHeader或getCookies等在ServletRequest中無法得到的方法,就要把此對象構造成HttpServletRequest。

第二個參數為ServletResponse。除了在兩個情形下要使用它以外,通常忽略這個參數。首先,如果希望完全阻塞對相關servlet或JSP頁面的訪問。可調用response.getWriter並直接發送一個響應到客戶機。其次,如果希望修改相關的servlet或JSP頁面的輸出,可把響應包含在一個收集所有發送到它的輸出的對象中。然後,在調用serlvet或JSP頁面後,過濾器可檢查輸出,如果合適就修改它,之後發送到客戶機。

DoFilter的最後一個參數為FilterChain對象。對此對象調用doFilter以激活與servlet或JSP頁面相關的下一個過濾器。如果沒有另一個相關的過濾器,則對doFilter的調用激活servlet或JSP本身。

public void init(FilterConfig config) thows ServletException

init方法只在此過濾器第一次初始化時執行,不是每次調用過濾器都執行它。對於簡單的過濾器,可提供此方法的一個空體,但有兩個原因需要使用init。首先,FilterConfig對象提供對servlet環境及web.xml文件中指派的過濾器名的訪問。因此,普遍的辦法是利用init將FilterConfig對象存放在一個欄位中,以便doFilter方法能夠訪問servlet環境或過濾器名.其次,FilterConfig對象具有一個getInitParameter方法,它能夠訪問部署描述符文件(web.xml)中分配的過濾器初始化參數。

public void destroy( )
大多數過濾器簡單地為此方法提供一個空體,不過,可利用它來完成諸如關閉過濾器使用的文件或資料庫連接池等清除任務。

1.2 將過濾行為放入doFilter方法
doFilter方法為大多數過濾器地關鍵部分。每當調用一個過濾器時,都要執行doFilter。對於大多數過濾器來說,doFilter執行的步驟是基於傳入的信息的。因此,可能要利用作為doFilter的第一個參數提供的ServletRequest。這個對象常常構造為HttpServletRequest類型,以提供對該類的更特殊方法的訪問。

1.3 調用FilterChain對象的doFilter方法
Filter介面的doFilter方法以一個FilterChain對象作為它的第三個參數。在調用該對象的doFilter方法時,激活下一個相關的過濾器。這個過程一般持續到鏈中最後一個過濾器為止。在最後一個過濾器調用其FilterChain對象的doFilter方法時,激活servlet或頁面自身。
但是,鏈中的任意過濾器都可以通過不調用其FilterChain的doFilter方法中斷這個過程。在這樣的情況下,不再調用JSP頁面的serlvet,並且中斷此調用過程的過濾器負責將輸出提供給客戶機。

1.4 對適當的servlet和JSP頁面注冊過濾器
部署描述符文件的2.3版本引入了兩個用於過濾器的元素,分別是:filter和filter-mapping。filter元素向系統注冊一個過濾對象,filter-mapping元素指定該過濾對象所應用的URL。

下面是一個完整的例子:
//建立一個實現Filter介面的類。這個類需要三個方法,分別是:doFilter、init和destroy。
//doFilter方法包含主要的過濾代碼,init方法建立設置操作,而destroy方法進行清
package filterpkg;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class testFilter implements Filter{
public void init(FilterConfig filterConfig) throws ServletException
{
}
//在doFilter方法中放入過濾行為。doFilter方法的第一個參數為ServletRequest對象。
//此對象給過濾器提供了對進入的信息(包括表單數據、cookie和HTTP請求頭)的完全訪問。
//第二個參數為ServletResponse,通常在簡單的過濾器中忽略此參數。
//最後一個參數為FilterChain,如下一步所述,此參數用來調用servlet或JSP頁。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain)
{
PrintWriter wout=null;
try
{
wout=response.getWriter();
}
catch(IOException e)
{
}
HttpServletRequest req=(HttpServletRequest)request;//將request轉化為它的子類HttpServletRequest
String uri=req.getRequestURI();//獲得傳入的URI
if (uri.indexOf("MyJsp.jsp")>0 ||uri.indexOf("MainForm.do")>0 )//如果是我們指定的登錄頁面或驗證頁面
{
try
{
//調用FilterChain對象的doFilter方法。Filter介面的doFilter方法取一個FilterChain對象作為它的一個參數。
//在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。
filterChain.doFilter(request, response);
}
catch(Exception e)
{
}
return;
}

if (req.getSession()!=null)
if (req.getSession().getAttribute("USERID")==null)
{
wout.write("<HTML><BODY> Check error! <br/> </BODY> </HTML>");
wout.flush();
return;
}
try
{
filterChain.doFilter(request, response);
}
catch(Exception e)
{
}
}

public void destroy()
{
}
}

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>CHECKCODE</filter-name>
<filter-class>filterpkg.testFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CHECKCODE</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ControlServlet</servlet-name>
<servlet-class>filterpkg.ControlServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControlServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

Ⅲ Java中的文件過濾器是怎麼添加的

FileFilter filter = new FileNameExtensionFilter("文本文件", "txt");
JFileChooser fileChooser = ...;
fileChooser.addChoosableFileFilter(filter);

Ⅳ java 文件過濾器怎麼實現。

import java.io.File;
import java.io.FilenameFilter;

/**
* 文件過濾器的簡單實現
*
* @ ajaxfan
* @date 2010-04-17
*/
public class FileNameFilterDemo {
public static void main(String[] args) {
list("d:/");
}

/**
* 列出特定路徑下的txt文件
*
* @param directoryName
* 路徑名
*/
private static void list(String directoryName) {
File dir = new File(directoryName);
// 確定該路徑指向一個目錄
if (dir.exists() && dir.isDirectory()) {
// 列出所有結尾為txt的文件
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith("txt");
}
});
System.out.println(java.util.Arrays.toString(files));
}
}
}

Ⅳ MFC的文件對話框過濾器怎麼設置

CFileDialog::CFileDialog

CFileDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL
);

參數: bOpenFileDialg 如果為TRUE, 則創建文件打開對話框;如果為FALSE,則構造一個File Save As(另存為)對話框。
lpszDefExt 預設文件擴展名,如果用戶在文件名編輯框中不包含擴展名,則lpszDefExt定義的擴展名自動加到文件名後。如果為NULL,則不添加擴展名。
lpszFileName 初始顯示於文件名編輯框中的文件名,如果為NULL,則不顯示初始文件名。
dwFlags 一個或多個標志的組合,使你可定製對話框。要了解這些標志的描述,可參閱聯機文檔「Win32 SDK」中的OPENFILENAME結構。如果你改變m_ofn.Flags結構成員,在改變中用OR操作保持預設行為完整。
lpszFilter 一列字元串對,指定可以應用到文件的過濾器。如果指定過濾器,僅被選擇的文件顯示於文件列表框中。請參閱說明部分,了解如何使用過濾器。
pParentWnd 指向文件對話框對象的父窗口或擁有者窗口。

說明:
調用此成員函數構造一個標准Windows文件對話框對象,或構造一個打開對話框或構造一個存檔對話框,根據bOpenFileDialog的值決定。
OFN_ALLOWMULTISELECT標志。你應提供文件名緩沖區來放置返回的多個文件名的列表,這通過用一個分配了的緩沖區指針替換m_ofn.lpstrFile來實現,要在創建了CFileDialog之後調用DoModal之前進行此操作。另外,必須用m_ofn.lpstrFile指向的緩沖區位元組數來設置m_ofn.nMaxFile。
為使用戶用滑鼠或鍵盤改變一個Explorer風格對話框的大小,設置OFN_ENABLESIZING標志,這僅當你提供一個鉤子進程或定製模板時才有必要設置。此標志僅與一個Explorer風格的對話框一起工作,舊風格的對話框不可改變大小。
lpszFilter參數用於判斷文件名類型及文件列表框中哪些可被顯示。雙字元串的第一個字元串描述過濾器,第二個串表明使用的文件擴展名,多重擴展可用「;」來指定。字元串由兩個「|」字元結尾,最後是一個NULL。也可使用CString對象作為參數。
例如,Mirosoft Excel 允許用戶用.XLC擴展名(表)或.XLS(工作表)打開文件,Excel過濾器應如下:
static char BASED_CODE szFilter[] =
"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";

Ⅵ 用C++編寫一個文本過濾器

|文||static WCHAR szFilter[]=L"可執行文件(*.exe)|*.exe|文本文件(*.txt)|*.txt|Word文檔(.doc)|*.doc||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,szFilter);
假設你用ListCtrl控制項,就用下面的代碼實現版
if(dlg.DoModal()==IDOK)
{
權this->PathList.ResetContent();
POSITION pos=dlg.GetStartPosition();
while(pos)
{
this->PathList.AddString(dlg.GetNextPathName(pos));
}
}

Ⅶ Beyond Compare 設置文件過濾器

在使用Beyond Compare軟體進行文件夾比較時,您可以指定您想要包括或者排除回的文件類型。例如,如果您答要比較某個文件夾,你可以選擇包括文件類型如 *.pas、 *.dfm 和 *.dpr。但是,您也可以通過設置排除文件類型,選擇比較文件夾只包含除 *.dcu 以外的所有文件。
您可以使用文件過濾器工具欄,去編輯指定一個簡單的「包括這些類型」過濾器。輸入用分號分隔的文件類型,或使用下拉列表從預設選擇,其中文件前包括一個減號(-)將的被排除。
除了這些簡單的通配符過濾器,您可以指定更復雜的過濾器,可以自定義包含或排除文件或文件夾的名字。單擊「過濾」按鈕,打開文件夾比較—會話設置對話框,切換到「名稱過濾器」選項卡,選擇需要包含或者排除的文件或文件夾,單擊「添加到預設」按鈕,即可自定義過濾文件類型。
文件過濾器可以過濾基於他們修改日期、大小、文件屬性或文本內容的文件。在文件夾比較--會話設置對話框中,切換到其他過濾器選項卡。單擊「+」按鈕,選擇排除文件類型。單擊確定,即可完成過濾設置。

Ⅷ java 文件過濾器為什麼報空指針異常求詳解!!!

accept函數你用的不對,它只需要你指定過濾條件就可以了,不需要遞歸調用.

如果你需要其子目錄下的.png文件,可以另外寫一個遞歸調用.

完整的文件過濾的Java程序如下

importjava.io.File;
importjava.io.FilenameFilter;
{
@Override
publicbooleanaccept(Filedir,Stringname){
if(name.toLowerCase().endsWith(".png"))returntrue;
returnfalse;
}
}
publicclassFileDemo6_1{
staticvoidfindFile(Filedir){
if(dir.isDirectory()){
File[]fs1=dir.listFiles(newMyFilenameFilter1());
for(Filefile2:fs1){
System.out.println(file2);
}
File[]fs=dir.listFiles();
for(Filefile:fs){
findFile(file);
}
}
}
publicstaticvoidmain(String[]args){
findFile(newFile("C:/tmp/6"));
}
}
運行結果
C: mp6female.png
C: mp6male.png
C: mp6imagefemale.png

Ⅸ ISO文件卷過濾器是什麼,有什麼用

關於「ISO文件卷過濾器」的說明:

1)ISO文件卷過濾器的作用只是去掉尾部的空白數據而已。

2)有些光碟加密程序會在尾部隱藏加密信息,這些信息位於ISO文件卷之外,因此啟用「ISO文件卷過濾器」會出現問題。這時切忌啟用「ISO文件過濾器」。否則無法正常製作鏡像,或製作的鏡像可能無法使用。這也是UltraISO單獨設置這個選項的道理。

3)幾乎所有刻錄軟體在將ISO鏡像刻錄到CD-R上時會添加空白數據(Padding Blocks),目的是提高光碟的訪問性能。否則有些老光碟機在定位最外邊的扇區時可能有問題。

4)Windows資源管理器通過ISO文件卷的目錄信息,直接訪問文件數據。尾部的空白數據不會對光碟的使用造成任何影響。

5)因此幾乎所有的鏡像製作軟體,包括Nero,CloneCD,Alcohol 102%均採用「忠實原盤」的方式製作ISO。這樣既不影響使用,也不會遺漏任何有用數據。

6)UltraISO的「ISO文件卷過濾器」對使用MD5校驗有所幫助。如果ISO文件為標准數據鏡像,可以用WinMD5軟體提取MD5校驗碼;刻錄 後,用UltraISO+ISO過濾器可製作大小相同的鏡像,方便進行MD5校驗。不過這種方法比較繁瑣。建議用UltraISO的"檢查CD/DVD光 盤"功能,先計算ISO的MD5碼,然後直接計算光碟的MD5碼,可直接比較。在此項功能,ISO過濾器預設打開,因此不會包含光碟尾部的空白扇區。

關於UltraISO提供「ISO文件卷過濾器」的好處:

1)在製作鏡像文件時採用「忠實原盤」的方式,同時提供「ISO文件卷過濾器」選項。
一般情況下,不啟用「ISO文件卷過濾器」,確保製作的鏡像不會丟失重要信息。
如果是標准數據光碟,啟用「ISO文件卷過濾器」,可得到大小與原ISO一樣的鏡像文件,便於檢查。

2)在檢查光碟/ISO文件時,自動啟用「ISO文件卷過濾器」,從而避免因刻錄軟體添加Padding Blocks而造成的差異。

Ⅹ java中Filefilter和Filenamefilter的區別

兩種機制而已,篩選時的參數不同,很多類庫都會提供多種調用方式,並無不同,只是適配更多的情況
FileFilter filefilter = new FileFilter() {

public boolean accept(File file) {
//if the file extension is .txt return true, else false
if (file.getName().endsWith(".txt")) {
return true;
}
return false;
}
};

FilenameFilter filefilter = new FilenameFilter() {

public boolean accept(File dir, String name) {
//if the file extension is .txt return true, else false
return name.endsWith(".txt");
}
};

看到了吧,是介面里方法的參數類型不同,這樣你可以選自己需要的介面

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239