⑴ java怎麼實現掃描多個目錄中(包括子目錄)的指定文件,並且刪除它們
思路如下使用遞歸
public static void de(File f)
{ File [] b = f.listFiles();
//獲取包含file對象對應的子目錄或者文件
for(int i =0;i<b.length;i++}{
if(b[i].isFile()){
b[i].delete(); //判斷是否為文件如果是 就刪除 }
else{ de(b[i]);//否則重新遞歸到方法中 }
} f.delete();//最後刪除該目錄中所有文件後就刪除該目錄 }
⑵ Java 如何讀取目錄下的文件內容
Java讀取目錄下的文件內容,使用的是java的文件類,示例如下:
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.RandomAccessFile;
importjava.io.Reader;
publicclassReadFromFile{
/**
*以位元組為單位讀取文件,常用於讀二進制文件,如圖片、聲音、影像等文件。
*
*@paramfileName
*文件的名
*/
(StringfileName){
Filefile=newFile(fileName);
InputStreamin=null;
try{
System.out.println("以位元組為單位讀取文件內容,一次讀一個位元組:");
//一次讀一個位元組
in=newFileInputStream(file);
inttempbyte;
while((tempbyte=in.read())!=-1){
System.out.write(tempbyte);
}
in.close();
}catch(IOExceptione){
e.printStackTrace();
return;
}
try{
System.out.println("以位元組為單位讀取文件內容,一次讀多個位元組:");
//一次讀多個位元組
byte[]tempbytes=newbyte[100];
intbyteread=0;
in=newFileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
//讀入多個位元組到位元組數組中,byteread為一次讀入的位元組數
while((byteread=in.read(tempbytes))!=-1){
System.out.write(tempbytes,0,byteread);
}
}catch(Exceptione1){
e1.printStackTrace();
}finally{
if(in!=null){
try{
in.close();
}catch(IOExceptione1){
}
}
}
}
/**
*以字元為單位讀取文件,常用於讀文本,數字等類型的文件
*
*@paramfileName
*文件名
*/
(StringfileName){
Filefile=newFile(fileName);
Readerreader=null;
try{
System.out.println("以字元為單位讀取文件內容,一次讀一個位元組:");
//一次讀一個字元
reader=newInputStreamReader(newFileInputStream(file));
inttempchar;
while((tempchar=reader.read())!=-1){
//對於windows下, 這兩個字元在一起時,表示一個換行。
//但如果這兩個字元分開顯示時,會換兩次行。
//因此,屏蔽掉 ,或者屏蔽 。否則,將會多出很多空行。
if(((char)tempchar)!=' '){
System.out.print((char)tempchar);
}
}
reader.close();
}catch(Exceptione){
e.printStackTrace();
}
try{
System.out.println("以字元為單位讀取文件內容,一次讀多個位元組:");
//一次讀多個字元
char[]tempchars=newchar[30];
intcharread=0;
reader=newInputStreamReader(newFileInputStream(fileName));
//讀入多個字元到字元數組中,charread為一次讀取字元數
while((charread=reader.read(tempchars))!=-1){
//同樣屏蔽掉 不顯示
if((charread==tempchars.length)
&&(tempchars[tempchars.length-1]!=' ')){
System.out.print(tempchars);
}else{
for(inti=0;i<charread;i++){
if(tempchars[i]==' '){
continue;
}else{
System.out.print(tempchars[i]);
}
}
}
}
}catch(Exceptione1){
e1.printStackTrace();
}finally{
if(reader!=null){
try{
reader.close();
}catch(IOExceptione1){
}
}
}
}
/**
*以行為單位讀取文件,常用於讀面向行的格式化文件
*
*@paramfileName
*文件名
*/
(StringfileName){
Filefile=newFile(fileName);
BufferedReaderreader=null;
try{
System.out.println("以行為單位讀取文件內容,一次讀一整行:");
reader=newBufferedReader(newFileReader(file));
StringtempString=null;
intline=1;
//一次讀入一行,直到讀入null為文件結束
while((tempString=reader.readLine())!=null){
//顯示行號
System.out.println("line"+line+":"+tempString);
line++;
}
reader.close();
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(reader!=null){
try{
reader.close();
}catch(IOExceptione1){
}
}
}
}
/**
*隨機讀取文件內容
*
*@paramfileName
*文件名
*/
(StringfileName){
RandomAccessFilerandomFile=null;
try{
System.out.println("隨機讀取一段文件內容:");
//打開一個隨機訪問文件流,按只讀方式
randomFile=newRandomAccessFile(fileName,"r");
//文件長度,位元組數
longfileLength=randomFile.length();
//讀文件的起始位置
intbeginIndex=(fileLength>4)?4:0;
//將讀文件的開始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[]bytes=newbyte[10];
intbyteread=0;
//一次讀10個位元組,如果文件內容不足10個位元組,則讀剩下的位元組。
//將一次讀取的位元組數賦給byteread
while((byteread=randomFile.read(bytes))!=-1){
System.out.write(bytes,0,byteread);
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(randomFile!=null){
try{
randomFile.close();
}catch(IOExceptione1){
}
}
}
}
/**
*顯示輸入流中還剩的位元組數
*
*@paramin
*/
(InputStreamin){
try{
System.out.println("當前位元組輸入流中的位元組數為:"+in.available());
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
StringfileName="C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}
⑶ java如何查找指定目錄下的最新文件
這個Java類的作用是查找目錄文件中特定文件名的文件,並不是查找文件內容。具體代碼如下:
[java] view plain
package net.xsoftlab.ke;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
//查找目錄下指定文件名的文件
public class TextSearchFile {
static int countFiles = 0;// 聲明統計文件個數的變數
static int countFolders = 0;// 聲明統計文件夾的變數
public static File[] searchFile(File folder, final String keyWord) {// 遞歸查找包含關鍵字的文件
File[] subFolders = folder.listFiles(new FileFilter() {// 運用內部匿名類獲得文件
@Override
public boolean accept(File pathname) {// 實現FileFilter類的accept方法
if (pathname.isFile())// 如果是文件
countFiles++;
else
// 如果是目錄
countFolders++;
if (pathname.isDirectory()
|| (pathname.isFile() && pathname.getName().toLowerCase().contains(keyWord.toLowerCase())))// 目錄或文件包含關鍵字
return true;
return false;
}
});
List<File> result = new ArrayList<File>();// 聲明一個集合
for (int i = 0; i < subFolders.length; i++) {// 循環顯示文件夾或文件
if (subFolders[i].isFile()) {// 如果是文件則將文件添加到結果列表中
result.add(subFolders[i]);
} else {// 如果是文件夾,則遞歸調用本方法,然後把所有的文件加到結果列表中
File[] foldResult = searchFile(subFolders[i], keyWord);
for (int j = 0; j < foldResult.length; j++) {// 循環顯示文件
result.add(foldResult[j]);// 文件保存到集合中
}
}
}
File files[] = new File[result.size()];// 聲明文件數組,長度為集合的長度
result.toArray(files);// 集合數組化
return files;
}
public static void main(String[] args) {// java程序的主入口處
File folder = new File("E:/");// 默認目錄
String keyword = "1231";
if (!folder.exists()) {// 如果文件夾不存在
System.out.println("目錄不存在:" + folder.getAbsolutePath());
return;
}
File[] result = searchFile(folder, keyword);// 調用方法獲得文件數組
System.out.println("在 " + folder + " 以及所有子文件時查找對象" + keyword);
System.out.println("查找了" + countFiles + " 個文件," + countFolders + " 個文件夾,共找到 " + result.length + " 個符合條件的文件:");
for (int i = 0; i < result.length; i++) {// 循環顯示文件
File file = result[i];
System.out.println(file.getAbsolutePath() + " ");// 顯示文件絕對路徑
}
}
}
⑷ 用java寫一段程序掃描文件夾下所有後綴為.txt的文件代碼
《用java寫一段程序掃描文件夾下所有後綴》網路網盤txt 最新全集下載
鏈接: https://pan..com/s/1nKtaJpp1I3E0tTe3BGVS9Q
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。
⑸ 如何用java或者c#寫個掃描整個文件夾及子文件夾,驗證多個文件的md5值,並將md5值重復但不同
java的,我已經測試可以使用。
但是單個文件很大的話可能算md5會比較慢
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
importjava.util.ArrayList;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.math.BigInteger;
importjava.nio.MappedByteBuffer;
importjava.nio.channels.FileChannel;
publicclassMain
{
ArrayList<String>md5List=newArrayList<String>();
publicStringgetMd5(Filefile){
Stringvalue=null;
FileInputStreamin=null;
try{
in=newFileInputStream(file);
MappedByteBufferbyteBuffer=in.getChannel().map(FileChannel.MapMode.READ_ONLY,0,file.length());
MessageDigestmd5=MessageDigest.getInstance("MD5");
md5.update(byteBuffer);
BigIntegerbi=newBigInteger(1,md5.digest());
value=bi.toString(16);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(null!=in){
try{
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnvalue;
}
publicvoidrun(Filefile){
if(file!=null){
if(file.isDirectory()){
Filef[]=file.listFiles();
if(f!=null){
for(inti=0;i<f.length;i++)
run(f[i]);
}
}else{
Stringmd5=getMd5(file);
if(md5List.contains(md5)){
System.out.println(file.toString());
file.delete();
}else{
md5List.add(md5);
}
}
}
}
publicstaticvoidmain(Stringargs[]){
Mainm=newMain();
Stringpath="D:\test";
m.run(newFile(path));
}
}
⑹ Java 找出某一個文件夾下的所有文件
要養成看API文檔的好習慣。
查看API可以看出,
File對象的 String[] list()方法:
Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname.
意思很明確,返回實例化File時,傳入的字元串類型的路徑名稱,此方法返回此路徑下的所有文件及目錄,不帶路徑,
File對象的 String[] listFiles()方法:
Returns an array of abstract pathnames denoting the files in the directory denoted by this abstract pathname.
意思很明確,返回實例化File時,傳入的抽象字元串類型的路徑名稱,此方法返回此路徑下的所有文件及目錄,含抽象路徑.
一般調用System.out.println(Object obj);這個方法,查看Api文檔,
System.out返回一個標準的PrintWriter,此PrintWriter是OutputStream的子類,當調用println()方法輸出對象時,調用的是對象的toString()方法,如果對象沒有覆寫toString()方法,則直接輸出對象的堆內存地址。
查看API文檔,File類的toString()
Returns the pathname string of this abstract pathname
意即返回實例化File對象時候傳入的抽象路徑
你的test方法,實例化File對象的時候,用的是list()方法得到的,此時本身該抽象路徑就只含有文件名而沒有路徑了,另外一個方法則是用的是listFiles()方法,此時得到的都含有抽象路徑。因此你輸出的時候,就出現這種情況.
⑺ java如何實現文件搜索功能
java實現文件搜索主要使用file類和正則表達式,如下示例:
packagecom.kiritor.util;
importjava.io.File;
importjava.io.FileFilter;
importjava.util.Arrays;
importjava.util.Collections;
importjava.util.List;
/**
*文件的相關操作類
*
*@authorKiritor
*/
publicclassFileOperation{
;
privatestaticStringfilePath;
privatestaticFile[]fileList=null;//保存文件列表,過濾掉目錄
publicFileOperation(){
}
/**構造函數的參數是一個目錄*/
publicFileOperation(Stringpath){
Filefile=newFile(path);
if(file.isDirectory())
this.contentPath=path;
else
this.filePath=path;
}
/**獲取文件列表*/
publicstaticFile[]getFiles(){
if(contentPath==null){
Filefile=newFile(filePath);
fileList=newFile[1];
fileList[0]=file;
returnfileList;
}
fileList=newFile(contentPath).listFiles(newFileFilter(){
/**使用過濾器過濾掉目錄*/
@Override
publicbooleanaccept(Filepathname){
if(pathname.isDirectory())
{
returnfalse;
}else
returntrue;
}
});
returnfileList;
}
/**對當前目錄下的所有文件進行排序*/
publicstaticFile[]sort(){
getFiles();
Arrays.sort(fileList,newFileComparator());
returnfileList;
}
publicstaticvoidtree(Filef,intlevel){
StringpreStr="";
for(inti=0;i<level;i++){
preStr+="";
}
File[]childs=f.listFiles();
//返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
for(inti=0;i<childs.length;i++){
System.out.println(preStr+childs[i].getName());
if(childs[i].isDirectory()){
tree(childs[i],level+1);
}
}
}
//提供一個"比較器"
.util.Comparator<File>{
@Override
publicintcompare(Fileo1,Fileo2){
//按照文件名的字典順序進行比較
returno1.getName().compareTo(o2.getName());
}
}
}
⑻ 如何用java實現定時掃描文件夾
寫一個類繼承Thread,重寫run方法,在run方法裡面寫你要做的處理,然後根據你的定時要求來設置sleep的時間。
newThread(){
run(){
//根據具體需求設置時間:毫秒
sleep(100ms);
while(true){
//掃描文件夾處理
....
//根據具體需求設置時間:毫秒
sleep(24*3600*1000);
}
}
}
java中不是有定時器嗎?寫好自己的任務,定時執行就可以了
Timertimer=newTimer();
Tasktask=newTask(){
publicvoidrun(){
System.out.println("running...");
}
};
timer.shele(task,delayDate,internalTime);
這種跟操作系統關系緊密的操作沒必要用java來做,除非你是J2EE,那麼Spring里有quataz類似Unix裡面cronjob的開源框架可以用,很方便
Unix、linux操作系統配到cronjob里即可,Windows操作系統的「開始」-》「附件」-》系統工具-》計劃任務
⑼ 用 java 做一個程序掃描指定的目錄及其所有的子目錄和文件,輸出格式要求如下(假設掃描C:) C:\ |--test
public static void main(String[] args) {
// TODO Auto-generated method stub
int j = 0;
while(j<5) {
File f = new File("c:/Mailboxes/in/");
File[] fArray = f.listFiles();
for(int i=0; i<fArray.length; i++) {
if(fArray[i].getName().matches("[\\w]*.EML$")) {
System.out.println(fArray[i].getName());
try {
FileInputStream is = new FileInputStream(fArray[i]);
byte[] b = new byte[(int)fArray[i].length()];
is.read(b);
FileOutputStream os = new FileOutputStream("c:/mail/" + fArray[i].getName());
os.write(b);
os.close();
is.close();
fArray[i].delete();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
j++;
}
}
⑽ java編輯一個掃描文件的方法,要求可以掃描根目錄下的所有文件
package com.sunjob;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
public class Js {
/**
* @param args
*/
//初始化n,用於計數
static int n=0;
public static void get(File file) {
try {
//判斷文件是否是文件,如果是文件,獲取路徑,並計數
if(file.isFile())
{
n++;
System.out.println(file.getAbsolutePath());
}
else
{
//如果是文件夾,聲明一個數組放文件夾和他的子文件
File[] f=file.listFiles();
//遍歷文件件下的文件,並獲取路徑
for (File file2 : f) {
get(file2);
}
}
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
這是掃描c盤的所有文件,可以修改
File file=new File("c:\\");
get(file);
System.out.println("文件個數為:"+n);
}
}