首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Web开发
> 详细
利用Lucene对大文件进行预处理(可运行)
时间:
2015-03-15 23:06:15
阅读:
152
评论:
0
收藏:
0
[点我收藏+]
标签:
package comTwo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
public class WanZheng {
public static String replace(String line){
//创建一个HashMap存储全角和半角字符之间的对应关系
HashMap map = new HashMap();
map.put(",", ",");
map.put("。", ".");
map.put("〈", "<");
map.put("〉", ">");
map.put("|", "|");
map.put("《", "<");
map.put("》", ">");
map.put("[", "[");
map.put("]", "]");
map.put("?", "?");
map.put(""", "\"");
map.put(":", ":");
map.put("﹑", ",");
map.put("(", "(");
map.put(")", ")");
map.put("【", "[");
map.put("】", "]");
map.put("-", "-");
map.put(" ̄", "~");
map.put("!", "!");
map.put("`", "`");
map.put("1", "1");
map.put("2", "2");
map.put("3", "3");
map.put("4", "4");
map.put("5", "5");
map.put("6", "6");
map.put("7", "7");
map.put("8", "8");
map.put("9", "9");
int length = line.length();
for(int i = 0; i < length; i++){
String charat = line.substring(i, i + 1);
if(map.get(charat) != null){
line = line.replace(charat, (String)map.get(charat));
}
}
return line;
}
public static File charactoProcess(File file, String destFile){
try{
//创建一个输出流,用于写新文件
BufferedWriter writer = new BufferedWriter(new FileWriter(destFile));
//创建一个输入流,用于读取文件
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
while(line != null){
//调用replace方法替换所有的全角字符
String newline = replace(line);
//将替换后的String写入新的文件
writer.write(newline);
//写入行分隔符
writer.newLine();
line = reader.readLine();
}
reader.close();
writer.close();
}catch(IOException e){
e.printStackTrace();
}
return new File(destFile);
}
public static void splitToSmallFils(File file, String outputpath){
try{
//文件计数器,用于文件名
int filePointer = 0;
//定义文件的最大长度
int MAX_SIZE = 10240;
//创建文件输出流
BufferedWriter writer = null;
//创建文件输入流
BufferedReader reader =
new BufferedReader(new FileReader(file));
//建立字符串缓冲区,存储大文件中读取的数据
StringBuffer buffer = new StringBuffer();
String line = reader.readLine();
//循环遍历读取的每行字符串
while(line != null){
//如果读取字符串不为空,则将字符串加入到缓冲区
//并在每行字符串后面加上回车换行
buffer.append(line).append("\r\n");
//判断缓冲区长度是否达到文件最大长度
if(buffer.toString().getBytes().length >= MAX_SIZE){
//如果文件达到最大长度,则将缓冲区的数据写入文件
//filePointer是文件名前缀的一部分
writer = new BufferedWriter(new FileWriter(outputpath + "切分后" + filePointer + ".txt"));
writer.write(buffer.toString());
writer.close();
//文件计数器加一
filePointer++;
//清空缓冲区数据
buffer = new StringBuffer();
}
//如果没有达到文件的最大长度
line = reader.readLine();
}
//如果大文件已经读取完毕,直接将缓冲区数据写入文件
writer = new BufferedWriter(new FileWriter(outputpath + "切分后" + filePointer + ".txt"));
writer.write(buffer.toString());
writer.close();
}catch(IOException e){
e.printStackTrace();
}
}
public static void preprocess(File file, String outputDir){
try{
splitToSmallFils(charactoProcess(file, outputDir + "output.all"), outputDir);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//设置需要被预处理的原文件位置
String inputFile = "E:\\Lucene项目\\钢铁是怎样练成的.txt";
//设置预处理后的文件存放位置
String outputDir = "E:\\Lucene项目\\目标文件\\";
//判断处理后文件存放文件夹是否存在,如果不存在则创建文件加
if(!new File(outputDir).exists()){
new File(outputDir).mkdirs();
}
//创建一个FileProcess类,并要求调用preprocess
WanZheng filePreprocess = new WanZheng();
filePreprocess.preprocess(new File(inputFile), outputDir);
}
}
利用Lucene对大文件进行预处理(可运行)
标签:
原文地址:http://blog.csdn.net/u012965373/article/details/44281219
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
36.VUE — 认识 Webpack 和 安装
2021-07-28
【PHP】上传图片翻转问题
2021-07-28
php对数字进行万。亿的转化
2021-07-28
五个 .NET 性能小贴士
2021-07-28
Three.js中显示坐标轴、平面、球体、四方体
2021-07-28
.net 5+ 知新:【1】 .Net 5 基本概念和开发环境搭建
2021-07-27
1.html,css
2021-07-27
基于Docker搭建 Php-fpm + Nginx 环境
2021-07-27
nginx + http + svn
2021-07-27
kubernets kube-proxy的代理 iptables和ipvs
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!