java文件中查找字符串_Java文件中查找字符串

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-24 05:17   52   0

首先,贴代码,相关代码如下:

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)

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-01-08 22:47

浏览 1112

评论

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP