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语句未正常结束。郁闷,都是相当诡异的问题。 展开
代码如下
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语句未正常结束。郁闷,都是相当诡异的问题。 展开
4个回答
展开全部
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 语句吗?就不能把它这成几段然后分批次的送进去执行?
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 语句吗?就不能把它这成几段然后分批次的送进去执行?
展开全部
应该是编码字符集不正确导致的,在项目上淡季右键,选择最下边拿一个,点开,在右边就有更改编码字符集的,改成UTF-8就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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环境
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么不用IO流呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |