Java文件中查找字符串

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

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<String> fileNames = new Vector<String>(); 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<String> outFileLists,String filePath,boolean subFolderFlag) { if(outFileLists == null) { outFileLists = new Vector<String>(); } 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.<init>(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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值