首先,贴代码,相关代码如下:
package com.huawei.test;
import java.io.File;
import java.io.FileInputStream;
import java.nio.CharBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.util.Vector;
public class FileSearchTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "File";
Vector fileNames = new Vector();
new FileSearchTest().getFileList(fileNames, filePath, false);
Charset charset = Charset.forName("GB18030");
CharsetDecoder decoder = charset.newDecoder();
try
{
for (String fileName : fileNames)
{
FileInputStream fis = new FileInputStream(fileName);
FileChannel fc = fis.getChannel();
int sz = (int)fc.size();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
CharBuffer cb = decoder.decode(bb);
String s = String.valueOf(cb);
int n = s.indexOf("东西");
if(n > -1)
{
System.out.println("exist in " + fileName);
}
else
{
System.out.println("not exist in " + fileName);
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public boolean getFileList(Vector outFileLists,String filePath,boolean subFolderFlag)
{
if(outFileLists == null)
{
outFileLists = new Vector();
}
File file = new File(filePath);
if(file.exists())
{
File files[] = file.listFiles();
if(subFolderFlag)
{
for(int i = 0; i < files.length; i++)
{
if(files[i].isFile())
{
outFileLists.add(filePath + "//" + files[i].getName());
//outFileLists.add(files[i].)
}
else if(files[i].isDirectory())
{
getFileList(outFileLists, filePath + "//" + files[i].getName(), subFolderFlag);
}
}
}
else
{
for(int i = 0; i < files.length; i++)
{
if(files[i].isFile())
{
outFileLists.add(filePath + "//" + files[i].getName());
}
}
}
}
else
{
return false;
}
return true;
}
}
这里要考虑文件过大的情况,因此运行的时候给JAVA虚拟机设定参数来指定其内存大小,运行命令如下:
java -Xms512m -Xmx512m -jar test.jar,这里将程序打包成了test.jar包。
否则就会出现OutOfMemoryError异常。
D:/Workspaces/JavaTest>java -jar test.jar
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.(Unknown Source)
at java.nio.HeapCharBuffer.toString(Unknown Source)
at java.nio.CharBuffer.toString(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at com.huawei.test.FileSearchTest.main(FileSearchTest.java:38)
分享到:


2011-01-08 22:47
浏览 1112
评论