如何用java 提取txt文件中{}中间的内容
txt很长需要提取其中所有大括号内的不是仅仅就一句话是一整篇中的提取。求码,万分感谢啦就是这个文本大概有4千条这种信息我只想提取大括号内的并且存在另外的txt中。...
txt很长 需要提取其中所有大括号内的 不是仅仅就一句话 是一整篇中的提取。求码 , 万分感谢啦
就是这个文本 大概有4千条这种信息 我只想提取大括号内的 并且存在另外的txt中。 展开
就是这个文本 大概有4千条这种信息 我只想提取大括号内的 并且存在另外的txt中。 展开
6个回答
展开全部
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");
}
}
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");
}
}
展开全部
简单一点思路较为清晰的做法,
逐行读取
将每一行使用 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 写入到另一个文件
}
比较简单一点的思路,,无码
逐行读取
将每一行使用 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 写入到另一个文件
}
比较简单一点的思路,,无码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)
{
}
}
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)
{
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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) {
}
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) {
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能提前全部的内容吗
更多追问追答
追问
什么???
追答
你能够得到txt文件里面全部的内容吗,如果可以的话就用split获得{}里面的东西,如果不行的话就要用其他的方法了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询