java scanner 读取文件不完整

用util包里的scanner读取一个文本文件,文件有一万七千多行,但是不知道怎么搞的读完了控制台输出的时候只有4953-6478行,郁闷毁了,想分行读取,欢迎高手帮忙解... 用util包里的scanner读取一个文本文件,文件有一万七千多行,但是不知道怎么搞的读完了控制台输出的时候只有4953-6478行,郁闷毁了,想分行读取,欢迎高手帮忙解答。

代码如下
StringBuffer sql = new StringBuffer();
Scanner scan = null;
try {
scan = new Scanner(fr);

} catch (FileNotFoundException e1) {

e1.printStackTrace();
}

Date now = new Date();
while (scan.hasNext()){
String tem = scan.nextLine();
String[] st = tem.split(",");
tem = "insert into movie values(\'"+st[0]+"\',\'"+st[1]+"\',\'"+st[2]+"\')\n";
System.out.print(tem);
sql.append(tem);
}
Date late = new Date();
System.out.println(late.getTime()-now.getTime());
肯定不是啦~ 要是连这个都分不清 我可以去撞墙了。 很诡异的事情高手来帮忙啊~ 现在用的BufferedReader搞定了,可是怎么也考虑不清楚Scanner是怎么回事。

对了 Statement.execute方法有长度限制吗?一万多行的数据拼接成一条StringBuffer,大概也就几十万个字符长度到一百万个字符长度吧,结果往数据库发送的时候总是说SQL语句未正常结束。郁闷,都是相当诡异的问题。
展开
 我来答
卫星3D看世界
2009-08-08 · TA获得超过909个赞
知道小有建树答主
回答量:461
采纳率:66%
帮助的人:168万
展开全部
import java.util.*;
import java.io.*;

public class Triangle_Compute {
public static void main(String args[]) throws Exception {
Scanner scan = null;
StringBuffer sql = new StringBuffer();
try {
FileReader fr = new FileReader("F:/目录结构.txt");
scan = new Scanner(fr);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}

Date now = new Date();
int lineCounter = 0;
while (scan.hasNext()) {
String tem = scan.nextLine();
tem = "Line: " + (lineCounter++) + "==>" + tem + "\n";
//System.out.println(tem);
sql.append(tem);
}
System.out.println(sql.toString());
Date late = new Date();
System.out.println(late.getTime() - now.getTime());
}
}

目录结构.txt 里面有 47232 行数据,打印结果后面部分如下:
Line: 47228==>\\lg-fs\Rnd\Software\3.Estimate\Trial Edition\powerpcb5.0_install\
FlexDoc\faq
Line: 47229==>\\lg-fs\Rnd\Software\3.Estimate\Trial Edition\powerpcb5.0_install\
HelpUtil\AnswerWorks
Line: 47230==>\\lg-fs\Rnd\Software\3.Estimate\Trial Edition\powerpcb5.0_install\
Sentinel5.36\WIN_9X
Line: 47231==>\\lg-fs\Rnd\Software\3.Estimate\Trial Edition\powerpcb5.0_install\
Sentinel5.36\WIN_NT
Line: 47232==>\\lg-fs\Rnd\Software\3.Estimate\Trial Edition\powerpcb5.0_install\
Sentinel5.36\WIN_NT\I386

3843

最后的数据是总共耗时 3843 毫秒,楼主是不是搞错了啊,你那“控制台输出的时候只有4953-6478行”输出的是时间??

弱弱的问一句:你的 sql 语句要用分号结束吧?
tem = ...+"\');\n"; // ) 后面有分号?!

非要弄成那么长的SQL 语句吗?就不能把它这成几段然后分批次的送进去执行?
戚心镶AM
2015-08-24 · TA获得超过680个赞
知道小有建树答主
回答量:824
采纳率:0%
帮助的人:190万
展开全部
应该是编码字符集不正确导致的,在项目上淡季右键,选择最下边拿一个,点开,在右边就有更改编码字符集的,改成UTF-8就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
第二号帅哥
2015-09-05 · TA获得超过336个赞
知道小有建树答主
回答量:413
采纳率:77%
帮助的人:171万
展开全部
import java.util.Scanner;
public class test
{
public static void main (String [] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int num = sc.nextInt();
System.out.println("您输入的是【" + num + "】");
}
}

使用上面的代码试试

Java Scanner 是需要在之前用import声明的

另外 你得确定你电脑里配置了Scanner环境

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞象工作室
2009-08-06 · TA获得超过1741个赞
知道答主
回答量:142
采纳率:0%
帮助的人:54.8万
展开全部
为什么不用IO流呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式