importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;/***@authorgjf

*db_pre.arff存储的是从xml文件中读取的xml信息*/

public classElmAuth {

Map map = new HashMap();//第一步//从xml文件中提取 读取xml文件中的author信息,写到db_pre.arff,并且替换特殊字符

public void settleXml(String src, String dst){//src=dblp.xml dst=db_pre.arff

File file = newFile(src);

File fl= newFile(dst);

FileReader fr;try{

fr= newFileReader(file);

FileWriter fw= newFileWriter(fl);

BufferedReader br= newBufferedReader(fr);

BufferedWriter bw= newBufferedWriter(fw);

String line= null;boolean flag = true;intloc_st;intloc_end;int len = 0, max = 0;while((line = br.readLine()) != null){if(line == null)break;

loc_st= line.indexOf("");if(loc_st != -1){

loc_end= line.indexOf("");

line= line.substring(loc_st + 8, loc_end);//在之间的数据,一个作者的名字

line=line.replace('&', ' ');

line=line.replace('$', ' ');

line=line.replace("' "," ");

line=line.replace("'", " ");/*flag以文章为界限,在同一篇文章内,flag=false,写入在同一行*/

if(flag){

bw.write("\n");

bw.write(line);

}else{

bw.write(",");

bw.write(line);

}

len++;//每写一个作者,计数加 +1

flag = false;

}else{

flag= true;if(max < len) max = len;//选择最大的len;

len = 0;

bw.flush();

}

}

System.out.println("第一步 论文中具有最大的作者数:" +max);

}catch(IOException e) {

e.printStackTrace();

}

}//消除只有单个作item//第二步:将作者的信息db_pre.arff中只有一个作者的数据删除

public void elimate_one(String src, String dst){//src=db_pre.arff dst=db_elone.arff

try{

File file= newFile(src);

FileReader fr= newFileReader(file);

BufferedReader br= newBufferedReader(fr);

File filew= newFile(dst);

FileWriter fw= newFileWriter(filew);

BufferedWriter bw= newBufferedWriter(fw);

Map map = new HashMap();

String line= null;int k = 1;int res = 0;while((line = br.readLine()) != null){

String[] arrLine= line.split(",");//作者之间用","隔离,","的数量表示作者的个数,数量比一少,则不写入.

if(arrLine.length > 1){

bw.write(line);

bw.write("\n");

res++;

}

}

bw.flush();

br.close();

bw.close();

fr.close();//System.out.println("The Row of the file is:" + res);

System.out.println("这篇论文中去除单个作者后的行数:" +res);

}catch(IOException e) {

e.printStackTrace();

}

}//将剩余的作储再hashMap中,key值为人名,value为出现的次数,支持度数

public void createMap(String src){//srr=db_elone.arff

try{

File file= newFile(src);

FileReader fr= newFileReader(file);

BufferedReader br= newBufferedReader(fr);

String line= null;while((line = br.readLine()) != null){if(line == null)break;

String[] arrLine= line.split(",");for(int i = 0; i < arrLine.length; ++i){if(map.get(arrLine[i]) == null){

map.put(arrLine[i],1);

}else{

map.put(arrLine[i], map.get(arrLine[i])+ 1);

}

}

}

fr.close();

br.close();

}catch(IOException e) {

e.printStackTrace();

}

}//从hashMap中删除小于支持度minsup的作者,本次的支持度数为100;

public void settleMap(intminsup){

Iterator it=map.keySet().iterator();while(it.hasNext()){

String str=(String) it.next();if(map.get(str)

it.remove();

}

}

System.out.println("Map的大小,支持度大于100的作者个数:" +map.size());

}//将大于minsup的作者存储到文件 db_minsup.arff,存储的是符合筛选的作者

public void updateMap(String src, String dst){//src=db_elone.arff dst=db_minsup.arff

try{

File filer= newFile(src);

FileReader fr= newFileReader(filer);

BufferedReader br= newBufferedReader(fr);

File filew= newFile(dst);

FileWriter fw= newFileWriter(filew);

BufferedWriter bw= newBufferedWriter(fw);

String line= null;int res = 0;boolean flag = true;while((line = br.readLine()) != null){if(line == null)break;

String[] arrLine= line.split(",");if(flag == false)res++;

flag= true;for(int i = 0; i < arrLine.length; ++i){if(map.get(arrLine[i]) != null){if(flag == true){

bw.write("\n" +arrLine[i]);

flag= false;

}else{

bw.write("," +arrLine[i]);

}

}

}

}

bw.flush();

System.out.println("符合筛选的作者合作写的论文篇数:" +res);

fw.close();

bw.close();

fr.close();

br.close();

}catch(IOException e) {

e.printStackTrace();

}

}//生成weka识别的文 dst=db

public void createWekaFile(String src, String dst){//src=db_minsup.arff dst=db

try{

File filer= newFile(src);

FileReader fr= newFileReader(filer);

BufferedReader br= newBufferedReader(fr);

File filew= newFile(dst);

FileWriter fw= newFileWriter(filew);

BufferedWriter bw= newBufferedWriter(fw);

bw.write("@relation db" + "\n");

Iterator it=map.keySet().iterator();while(it.hasNext()){

String str=(String) it.next();

str.replace("'", "\'");

bw.write("@attribute '" + str + "' { t}\n");

}

bw.write("@data" + "\n");

String line= null;boolean flag = true;while((line = br.readLine()) != null){if(line == null)break;

flag= true;charch;

it=map.keySet().iterator();while(it.hasNext()){

String str=(String)it.next();if(line.indexOf(str) >= 0){

ch= 't';

}else{

ch= '?';

}if(flag == true){

bw.write(ch);

}else{

bw.write("," +ch);

}

flag= false;

}

bw.write("\n");

}

bw.flush();

fw.close();

bw.close();

fr.close();

br.close();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}public voidclearMap(){

map.clear();

}public static voidmain(String args[]){

ElmAuth elmauth= newElmAuth();

elmauth.settleXml("dblp.xml", "db_pre.arff");

elmauth.elimate_one("db_pre.arff", "db_elone.arff");

elmauth.createMap("db_elone.arff");

elmauth.settleMap(100);//确定最小支持度数

elmauth.updateMap("db_elone.arff", "db_minsup.arff");for(int i = 0; i < 20; ++i){

System.out.println();

elmauth.elimate_one("db_minsup.arff", "db_minsup_elone.arff");

elmauth.clearMap();

elmauth.createMap("db_minsup_elone.arff");

elmauth.settleMap(100);

elmauth.updateMap("db_minsup_elone.arff", "db_minsup.arff");

}

elmauth.createWekaFile("db_minsup.arff", "db.arff");

}

}

java xml 大文件怎么打开_JAVA xml 流方式读取。数据挖掘大文件预处理。相关推荐

  1. c语言打开关闭文件的顺序,C语言1-文件概述、文件的打开与关闭、顺序读写数据文件(1).docx...

    C语言程序设计教案 章节名称 文件概述.文件的打开与关闭.顺序读写数据文件(1) 授课类型 □理论 □实验 ?理实一体 □实训 □实习 班级 地点 周次 星期 节次 授课进度 ?符合 □超前 □滞后 ...

  2. CAD文件怎么打开?什么软件可以快速打开CAD文件?

    对于刚接触CAD文件的小伙伴,肯定对如何打开CAD文件感到困惑,这是因为想要打开CAD文件,就需要使用专业的CAD看图软件才可以打开,那么CAD文件怎么打开?什么软件可以快速打开CAD文件? 如果我们 ...

  3. java 监控 配置 文件怎么打开_java实现文件变化监控的方法(推荐)

    一. spring配置文件:application.xml xmlns:tx="http://www.springframework.org/schema/tx" xmlns:ao ...

  4. 电脑上xml文件怎么打开,xml文件如何在电脑上打开

    XML文件可以用来在浏览器中生成网页,可以使用任意的标记等.不过有些网友接收到xml文件后发现电脑打不开,不知道xml文件怎么打开怎么办.下面小白就教下大家打开xml文件的方法. 1.运行EXCEL2 ...

  5. java音频文件怎么打开_java 怎么读取音乐文件

    展开全部 以随机读写方式打开一个MP3文件 将文件指针32313133353236313431303231363533e58685e5aeb931333337613838偏移量移动到文件长度倒数128 ...

  6. java导出文件到excel文件怎么打开_Java导出数据到Excel文件

    Java导出数据到Excel文件需要的jar包:easypoi-0.1.3.jar, poi-3.7-20101029 package com.sais.inkaNet.reportStatistic ...

  7. 怎么向java窗口中插入XSL表_Java向word中插入Excel文件对象

    前言: 在word文件中,虽然也有表格.但是有时我们想要将Excel中表格的大量数据直接插入到word文档中,这就需要用到word的插入对象的功能,也就是直接将Excel文件当做对象插入到word中. ...

  8. java高效复制文件并移动_Java 7:复制和移动文件和目录

    java高效复制文件并移动 这篇文章是我对Java 7 java.nio.file软件包的系列文章的继续,这次涵盖了文件的复制和移动以及完整的目录树. 如果您曾经对Java缺少copy和move方法感 ...

  9. android和ios传文件怎么打开方式,安卓怎么给iPhone传文件?文件互传教程

    大家使用手机的时候肯定都会用到蓝牙或者互传文件功能,安卓和安卓手机直接传文件非常简单方便,那么安卓怎么给iPhone传文件呢?小编下面就给大家带来安卓和iPhone文件互传教程. 说道文件互传,大家肯 ...

最新文章

  1. 日积月累真的很可怕,记住这些编程单词,两周学会敲代码
  2. 自建mysql和华为云mysql_自建数据库和云数据库区别和使用(以MySQL为例)
  3. (.DS_Store)避免多人提交代码到GitHub上起冲突
  4. 如何及时获得AI顶尖科研团队的最新论文与进展?只需要一份AI内参!
  5. python mixup
  6. Codeforces937D Sleepy Game
  7. 01ts简介和相关配置
  8. Delphi关于StringGrid的公用模块[转]
  9. android app应用后台休眠,安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行...
  10. 数据意识崛起,从企业应用看BI软件的未来发展
  11. Eigen3卸载与重装
  12. 基于Flink CDC打通数据实时入湖
  13. 【node】node连接mongodb操作数据库
  14. 常用的html语言,常用的HTML语言标记
  15. 百炼-2726:采药
  16. 广芯微电子产品使用笔记分享
  17. 深山红叶袖珍PE工具箱V16正式版
  18. 计算机的好与坏作文,电脑“坏”了的作文
  19. mac使用cjk和ctex宏包
  20. amd显卡Linux查看显存,通过软件查看显存参数_显卡_显卡技术应用-中关村在线

热门文章

  1. H5原生js简单拼图游戏
  2. java怎样断开http请求_http post请求管道断开
  3. 灰色预测方法预测温度matlab,灰色预测模型matlab程序
  4. Mysql查询获取过去一年,最后一天,每月,每月的数据
  5. PhpStorm2017破解版
  6. 求立方根函数cbrt
  7. (深入篇)漫游语音识别技术—带你走进语音识别技术的世界
  8. java之家_java之家
  9. 打开任务管理器的多种方法
  10. java英文日期格式化_java如何把英文的日期格式改成数字化的