设为首页 加入收藏

TOP

Java写的检索文件&合并文件功能
2014-11-24 08:27:25 来源: 作者: 【 】 浏览:1
Tags:Java 检索 文件 合并 功能

This give you some example for scanning files with specified string or specified file type from your pointed folder directory.


You can scan the files and copy them to a temporary folder, also you can merge them together into one file.


package com_2013;


import java.io.*;
import java.util.*;


public class FileScan {
static String fromdir = "Input the folder directory where you need to scan the files.";
static String todir = "Input the folder directory where you need copy the scanned files to.";
static String findstr = "Input the string that is specified scanned condition.";
static String targetFileName = "D:/targetFileName.sql";
static String filetype = ".sql";
static int filenum = 1;
static File outFile;
static RandomAccessFile outt;



public static void main(String[] args) {

File filedir = new File(fromdir);

FileScan FS = new FileScan();

// Function 1: Scan the files and copy them to a folder.
// File toDir = new File(todir);
// if (!toDir.isDirectory()) {
// toDir.mkdirs();
// }
// FS.fileScan(filedir);

// Function 2: Scan the files and merge them into one file.
try {
outFile = new File(targetFileName);
if (!outFile.exists())
outFile.createNewFile();
outt = new RandomAccessFile(outFile,"rw");
FS.fileScanUnite(filedir);
outt.close();
} catch (Exception e) {
e.printStackTrace();
}

}

public FileScan() {
}

/**
* Scan the specified files from the specified folder and unite them together into one file.
* @param fileDir
*/
public void fileScanUnite(File fileDir) throws Exception {
File[] file = fileDir.listFiles();
for(int i = 0; i < file.length; i ++) {
File subfile = file[i];
if (subfile.isDirectory()) {
fileScanUnite(subfile);
}else {
String temp = subfile.getName().toUpperCase();
if ( temp.indexOf(findstr.toUpperCase())>0 && temp.endsWith(filetype.toUpperCase()) ) {
RandomAccessFile inn = new RandomAccessFile(subfile,"r");
int c;
while ((c=inn.read()) != -1)
outt.write(c);

System.out.println("Merge file: " + subfile.getPath());
}
}
}
}

/**
* Scan the files from the specified folder
* @param filedir
*/
public void fileScan(File filedir) {
File[] file = filedir.listFiles();
for(int i = 0; i < file.length; i ++) {
File subfile = file[i];
if (subfile.isDirectory()) {
fileScan(subfile);
}else {
String temp = subfile.getName().toUpperCase();
if ( temp.indexOf(findstr.toUpperCase())>0 && temp.endsWith(filetype.toUpperCase()) ) {
try {
fileCopy(subfile, new File(todir + findstr + "_" + String.valueOf(filenum++) + filetype ));
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("Copy file: " + subfile.getPath());
}
}
}
}
}

/**
* Copy the file from f1 to f2sa
* @param f1
* @param f2
* @return
* @throws Exception
*/
public long fileCopy(File f1,File f2) throws Exception{
long time=new Date().getTime();
int length=2097152;
FileInputStream in=new FileInputStream(f1);
FileOutputStream out=new FileOutputStream(f2);
byte[] buffer=new byte[length];
while(true){
int ins=in.read(buffer);
if(ins==-1){
in.close();
out.flush();
out.close();
return new Date().getTime()-time;
}else
out.write(buffer,0,ins);
}
}

}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux中用while做随便输入n个数求.. 下一篇Java有理数的四则运算

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何从内核协议栈到 (2025-12-27 03:19:09)
·什么是网络协议?有哪 (2025-12-27 03:19:06)
·TCP/ IP协议有哪些 (2025-12-27 03:19:03)
·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)