多种java读写文本文件实现程序
先看最简单的 java按行读取文本文件?代码如下
代码如下 | 复制代码 |
FileReader reader = new FileReader("D:\www.hzhuti.com\feisanWeb\src\265_url.txt"); |
下面结合数据库来操作
然而导入时怎么也无法导入,查看之后才发现,全部数据形式不带表名
代码如下 | 复制代码 |
INSERT INTO (id, stat_date, referrer, func, catid, user_type, action_stat, channel) VALUES (240092, "2012-3-6", www.226511.cn, -10, 11611, -10, 65:4.0;57:1.0;52:1.0", "-10"); INSERT INTO (id, stat_date, referrer, func, catid, user_type, action_stat, channel) VALUES(240093, "2012-3-6", "baidu.com", -1, 10587, -10, "65:273.0", "-10"); |
总共6万多条;如果一个个加表名要多久呀,立即想到用程序处理一下,我们只要VALUES的值,使用sql批量插入就可以实现;
根据sql脚本的形式,我们只需要将VALUES后面括号后的“;”换成逗号,最终形式为
代码如下 | 复制代码 |
(240092, "2012-3-6", "renren.com", -10, 11611, -10, "65:4.0;57:1.0;52:1.0", "-10"), |
这样我们只需要在转换后的脚本文件开头加上
代码如下 | 复制代码 |
INSERT INTO t_xxx (id, stat_date, referrer, func, catid, user_type, action_stat, channel) |
即可以批量插入数据库;下面是JavaIO处理程序;
代码如下 | 复制代码 |
public static void main(String[] args) throws Exception{ BufferedReader in =new BufferedReader(new FileReader("D:\sql.sql"));//要读取的文本文件 BufferedWriter br=new BufferedWriter(new FileWriter("D:\aaa.sql"));//输出的结果文件 String s = ""; Pattern pattern = Pattern.compile(".*[)][;]");//正则匹配sql结尾 Matcher m = null; int i = 1; while((s = in.readLine()) != null){ m = pattern.matcher(s); if(m.matches()){ System.out.println(i++); s = s.replace(");", "),");//替换 } if(!s.matches(" *")){//剔除空白行 br.write(s); br.write("n"); } } //关闭 in.close(); br.flush(); br.close(); } |
执行速度很快,大约不到2秒;
/*
* 简单的读/写文本文件的示例
* 这里包含了三个例子,即
* 1.
* 2.
* 3. 将一个文件的内容读出来写入另一个文件中
* 同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流)
* 三个例子可以独立存在,所以根据需要只看其中一个就行了。
*/
代码如下 | 复制代码 |
import java.io.BufferedReader;
/** /**
|
文本文件的操作就这些了,有需要了解的朋友可以参考一下下。
补充:Jsp教程,Java基础