如何用java 提取txt文件中{}中间的内容

txt很长需要提取其中所有大括号内的不是仅仅就一句话是一整篇中的提取。求码,万分感谢啦就是这个文本大概有4千条这种信息我只想提取大括号内的并且存在另外的txt中。... txt很长 需要提取其中所有大括号内的 不是仅仅就一句话 是一整篇中的提取。求码 , 万分感谢啦
就是这个文本 大概有4千条这种信息 我只想提取大括号内的 并且存在另外的txt中。
展开
 我来答
gaoxiexin
推荐于2017-11-26 · TA获得超过126个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:87.7万
展开全部
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RWTXT {
public static String readTxtFile(String filePath, String pattern) {
StringBuffer str=new StringBuffer();
Pattern p;
Matcher m;
try {
String encoding = "GBK";
File file = new File(filePath);
if (file.isFile() && file.exists()) { // 判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), encoding);// 考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
if (pattern != null) {

while ((lineTxt = bufferedReader.readLine()) != null) {
// System.out.println(lineTxt);
p = Pattern.compile(pattern);
m = p.matcher(lineTxt);
if (m.find()) {
str.append(m.group(1)+"\r\n");
}

}
}
read.close();
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
return str.toString();

}

public static void writeFile(String str, String savePath) throws Exception {
BufferedWriter bw = new BufferedWriter(new FileWriter(savePath));
bw.write(str);
bw.close();
}

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String filePath = "d:\\1.txt";
// "res/";
String readTxt = readTxtFile(filePath, "\\{(.*)\\}");
System.out.println(readTxt);
writeFile(readTxt,"d:\\2.txt");
}

}
百度网友bee952e
2014-05-07 · 超过27用户采纳过TA的回答
知道答主
回答量:69
采纳率:100%
帮助的人:32.5万
展开全部
简单一点思路较为清晰的做法,
逐行读取
将每一行使用 split("{") 分隔成数组
取数组中 index 为1 的值 arr[1]
将 arr[1] 去掉最后一个 } str = arr[1].substring(0,arr[1].length()-1)
写入另一个流
while(row.next()){ //循环行
//取一行文本

String str = row.getLine();
String[] str = str.split("{");
String newStr = arr[1].substring(0,arr[1].length()-1)
//newStr 就是你需要的文本
//将newStr 写入到另一个文件
}

比较简单一点的思路,,无码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Cry_小衰
2014-05-07 · TA获得超过219个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:138万
展开全部
public static void main(String[] args){
File file=new File("读文件路径+文件名和后缀");
File file2=new FIle("写路径+文件名和后缀");
BufferedReader br=null;
BufferedWriter bw=null;
String mes=null;
int i=1;
try{
file2.createNewFIle();
br=new BufferedReader(new FileReader(file));
bw=new BufferedWriter(new FileWriter(file2));
while((mes=br.readline())!=null)
{
mes=mes.split("\\{")[1].split("\\}")[0];
System.out.println("提取到第"+i+"条数据:"+mes);
bw.write(mes,0,mes.length());
bw.flush();
System.out.println("存储完第"+i+"条数据“);
i++;
}
System.out.println("提取完毕!”);
}
catch(Exception e)
{
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
芳雪奈8
2014-05-07
知道答主
回答量:9
采纳率:0%
帮助的人:5.4万
展开全部
try {
BufferedReader red = new BufferedReader(new FileReader("文件地址"));
char [] c = new char[1024];
//用来装临时字符串的
StringBuffer sb = new StringBuffer();
//判断是否读取一半 例如 {这里是一句话,
boolean isHalf = false;
//用来存储读取出来的字符串
StringBuffer sb2 = new StringBuffer();

while(red.ready()){
int r = red.read(c);
//清空之前的数据
sb.delete(0, sb.length());
//将新读取的数据放入到sb中
sb.append(c,0,r);
while(true){
//查找第一个{
int z = sb.indexOf("{");
int y = sb.indexOf("}");
//那就是一对了
if (y > z) {
//获取字符串中的数据
sb2.append(sb.substring(z + 1, y));
//删除截取出来的数据以及{}
sb.delete(z, y + 1);
sb2.append(",");
}
if (z == -1) {
//说明已经没有{,那么就退出循环
break;
}
if (z != -1 && y == -1) {
//说明只有 {
sb2.append(sb.substring(z + 1));
sb.delete(z, y + 1);
}
if (y > z) {
//说明 情况是 xxx} {
sb2.append(sb.substring(0,y));
sb.delete(0, y + 1);
sb.append(",");
}

}

}
//获得所有的话
String [] ss = sb.toString().split(",");
//其中数组最有一个是空的,可以忽略掉
} catch (Exception e) {

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyh_muxue
2014-05-07 · TA获得超过161个赞
知道答主
回答量:267
采纳率:0%
帮助的人:95万
展开全部
能提前全部的内容吗
更多追问追答
追问
什么???
追答
你能够得到txt文件里面全部的内容吗,如果可以的话就用split获得{}里面的东西,如果不行的话就要用其他的方法了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式