JAVA 查找TXT文件内容
以下是代码:publicstaticvoidmain(String[]args){intdb2Name;Stringfname="c:\\1.txt";Filef=new...
以下是代码:
public static void main (String[] args) {
int db2Name;
String fname = "c:\\1.txt";
File f = new File(fname);
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
Pattern p = Pattern.compile("\\W(s.([0-9])*?)\\W");
Matcher m = p.matcher(s);
System.out.println("b");
while (s!=null){
while (m.find()) {
System.out.println(m.group(1).substring(1, 8));
db2Name=Integer.parseInt(m.group(1).substring(1, 8));
} s= br.readLine();
}
br.close();// 关闭缓冲读入流及文件读入流的连接.
System.out.println("a");
} catch (FileNotFoundException e1) {
System.err.println("File not found: " + fname);
} catch (IOException e2) {
e2.printStackTrace();
}
}
在1.TXT中
数据库 sacl1 的数据库配置 数据库配置发行版级别 = 0x0a00 数据库
发行版级别 = 0x0a00 数据库地域
这样就可以读取s开头的字母了。
在2.TXT中
数据库 sacl1 的数据库配置
数据库配置发行版级别 = 0x0a00
数据库发行版级别 = 0x0a00
数据库地域 = CN
数据库代码页 = 1386
这样就找不到S开头的字符了这个是为什么啊? 展开
public static void main (String[] args) {
int db2Name;
String fname = "c:\\1.txt";
File f = new File(fname);
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
Pattern p = Pattern.compile("\\W(s.([0-9])*?)\\W");
Matcher m = p.matcher(s);
System.out.println("b");
while (s!=null){
while (m.find()) {
System.out.println(m.group(1).substring(1, 8));
db2Name=Integer.parseInt(m.group(1).substring(1, 8));
} s= br.readLine();
}
br.close();// 关闭缓冲读入流及文件读入流的连接.
System.out.println("a");
} catch (FileNotFoundException e1) {
System.err.println("File not found: " + fname);
} catch (IOException e2) {
e2.printStackTrace();
}
}
在1.TXT中
数据库 sacl1 的数据库配置 数据库配置发行版级别 = 0x0a00 数据库
发行版级别 = 0x0a00 数据库地域
这样就可以读取s开头的字母了。
在2.TXT中
数据库 sacl1 的数据库配置
数据库配置发行版级别 = 0x0a00
数据库发行版级别 = 0x0a00
数据库地域 = CN
数据库代码页 = 1386
这样就找不到S开头的字符了这个是为什么啊? 展开
2个回答
展开全部
代码中的看我的解释:
public static void main (String[] args) {
int db2Name;
String fname = "c:\\1.txt";
File f = new File(fname);
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
//String s = br.readLine();//这里你获得了文件中的第一行,
//而你的2.txt中的第一行为空,所以后面while (s!=null)个循环就不执行了,
int i=0;
while(true){
i++;
s=br.readLine();
if(s!=null) break;
if(i>=100) {
System.out.println("文件为空,");//我这里自认为文件前100行没内容文件就为空
break;
}
}
//其实你后面也有此错误,自己安我的这个解决
Pattern p = Pattern.compile("\\W(s.([0-9])*?)\\W");
Matcher m = p.matcher(s);
System.out.println("b");
while (s!=null){
while (m.find()) {
System.out.println(m.group(1).substring(1, 8));
db2Name=Integer.parseInt(m.group(1).substring(1, 8));
} s= br.readLine();
}
br.close();// 关闭缓冲读入流及文件读入流的连接.
System.out.println("a");
} catch (FileNotFoundException e1) {
System.err.println("File not found: " + fname);
} catch (IOException e2) {
e2.printStackTrace();
}
}
public static void main (String[] args) {
int db2Name;
String fname = "c:\\1.txt";
File f = new File(fname);
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
//String s = br.readLine();//这里你获得了文件中的第一行,
//而你的2.txt中的第一行为空,所以后面while (s!=null)个循环就不执行了,
int i=0;
while(true){
i++;
s=br.readLine();
if(s!=null) break;
if(i>=100) {
System.out.println("文件为空,");//我这里自认为文件前100行没内容文件就为空
break;
}
}
//其实你后面也有此错误,自己安我的这个解决
Pattern p = Pattern.compile("\\W(s.([0-9])*?)\\W");
Matcher m = p.matcher(s);
System.out.println("b");
while (s!=null){
while (m.find()) {
System.out.println(m.group(1).substring(1, 8));
db2Name=Integer.parseInt(m.group(1).substring(1, 8));
} s= br.readLine();
}
br.close();// 关闭缓冲读入流及文件读入流的连接.
System.out.println("a");
} catch (FileNotFoundException e1) {
System.err.println("File not found: " + fname);
} catch (IOException e2) {
e2.printStackTrace();
}
}
追问
还是想请问你下,你说:
//而你的2.txt中的第一行为空,所以后面while (s!=null)个循环就不执行了。
但我在while (s!=null){System.out.println("c");//这里加了个输出C我看都执行的么!我到觉得
while (m.find())这个条件好像有点问题不执行了!这该怎么办啊
追答
System.out.println(m.find());一个主要原因是你的正则表达式的错误吧。来了百度hi我,我帮你看看
2011-06-22
展开全部
后面几句没看懂意思。。汗。。
追问
就是在两个TXT文件中。他们格式不同。1.TXT中我能找到S开头的一个词组。但2.txt中却找不到。这个是为什么啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询