在上一篇博文jdbc连接数据库中我已经简单介绍了如何连接到mysql数据库,今天要总结的是学长给我布置的一个小作业,把一个很大的已经用","分开了的一行一行的txt文件内容过滤掉注释(注释都用#标注着),生成新的文件,将新文件内容存到mysql数据库中。学长跟我说这个小作业以后也会应用到,作为一个小作业布置应该是挺好的。

这是文件的一小小小小部分。

然后这是把文件内容过滤同时存到一个新文件中的代码。

		try {                                                //************************
File file = new File("C:\\A.txt");
FileReader fr = new FileReader(file);
BufferedReader bufr = new BufferedReader(fr); file = new File("C:\\B.txt");
FileWriter fw = new FileWriter(file);
BufferedWriter bufw = new BufferedWriter(fw); String s = null;
while((s = bufr.readLine())!=null) {
if(s.startsWith("#")) { continue; }
else {
bufw.write(s);
bufw.newLine();
}
}
bufr.close();
fr.close();
bufw.close();
fw.close();
} catch(Exception e) {
e.printStackTrace();
} //***************************

用s这个字符串周转了一下。

先把A.txt中每一行的值赋给s,下面是过滤。

如果s不为空,进入循环,如果s是由#开始则无事发生,进入下一个循环,否则,就把s写入B.txt中。

下面是把B.txt中的每一行存入到数据库中。

要想完成这一步,得先有个数据库,数据库里有个表,表的属性对应着一行中用","分开的字符串。

#在cmd中操作数据库
#C:\\mysql\\bin是数据库bin的路径
#因为mysql不区分大小写,我下面就都用小写字母表示了 cd C:\\mysql\\bin
net start mysql
mysql -root -p #输完上面他会提醒你输入密码,输入完会自动进入mysql,有一个mqsql>的小标志
Enter password:******
mysql>create database mydb;
mysql>use mydb;
Database changed #上面你就已经完成了一个数据库的创建,下面是建表
#因为建表中我没有截图,现在懒得打字了,so复制粘贴了一个菜鸟教程的,推荐大家去看
mysql> CREATE TABLE runoob_tbl(
-> runoob_id INT NOT NULL AUTO_INCREMENT,
-> runoob_title VARCHAR(100) NOT NULL,
-> runoob_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( runoob_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql> #你可以通过
show tables;
#来查看你数据库里的表 #你可以通过
desc tablename;
来查看表的详细情况 #你可以通过
select * from tablename;
来查看表内的信息 ##注意sql语句要加分号##

弄完数据库,就可以继续往下进行了。我的表里有十一个属性。

 File file = new File("C:\\B.txt");
try {
FileReader fr = new FileReader(file);
BufferedReader bufr = new BufferedReader(fr);
sql = con.prepareStatement("insert into qws_parameters_are_separated_by_commas values(?,?,?,?,?,?,?,?,?,?,?)");
String s = null;
System.out.println("字符串分割:");
while((s = bufr.readLine())!=null) { //让s等于每一行
String[] arr = s.split(",");
for(int x=0;x<11;x++) {
sql.setString(x+1,arr[x]);

}
sql.executeUpdate();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////其实中间这部分不要也完全可以,作用就是把数据库中你已经存入的数据展示出来,不过因为那个文件太大,java控制台根本显示不完///////////////////////
sql = con.prepareStatement("select* from qws_parameters_are_separated_by_commas");
res = sql.executeQuery("select* from qws_parameters_are_separated_by_commas");
while(res.next()){
String aa = res.getString("纵行1");
String bb = res.getString("纵行2");
String cc = res.getString("纵行3");
String dd = res.getString("纵行4");
String ee = res.getString("纵行5");
String ff = res.getString("纵行6");
String gg = res.getString("纵行7");
String hh = res.getString("纵行8");
String ii = res.getString("纵行9");
String jj = res.getString("纵行10");
String kk = res.getString("纵行11");
System.out.print("||"+aa);
System.out.print("||"+bb);
System.out.print("||"+cc);
System.out.print("||"+dd);
System.out.print("||"+ee);
System.out.print("||"+ff);
System.out.print("||"+gg);
System.out.print("||"+hh);
System.out.print("||"+ii);
System.out.print("||"+jj);
System.out.print("||"+kk);
System.out.println();
System.out.println();
}
44  //////////////////////////////////其实中间这部分不要/也完全可以///////////////////////////////////////
sql.executeUpdate("delete from from qws_parameters_are_separated_by_commas");
bufr.close();
fr.close();
} catch(Exception e ) {
e.printStackTrace();
}

然后加上前天晚上的连接数据库的小函数,当然jar包也得导,总体代码如下:

import java.io.*;
import java.sql.*; class Connectiotest {
static Connection con;
static PreparedStatement sql;
static ResultSet res;
public Connection getConnection() { //数据库连接函数
try {
Class.forName("com.mysql.jdbc.Driver"); System.out.println("数据库驱动加载成功");
} catch(ClassNotFoundException e){
e.printStackTrace();
}
try {
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false","root","");
System.out.println("数据库连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return con;
} public static void main(String[] args) {
Connectiotest c = new Connectiotest(); //与数据库建立连接
c.getConnection(); try { //************************
File file = new File("C:\\A.txt");
FileReader fr = new FileReader(file);
BufferedReader bufr = new BufferedReader(fr); file = new File("C:\\B.txt");
FileWriter fw = new FileWriter(file);
BufferedWriter bufw = new BufferedWriter(fw); String s = null;
while((s = bufr.readLine())!=null) {
if(s.startsWith("#")) { continue; }
else {
bufw.write(s);
bufw.newLine();
}
}
bufr.close();
fr.close();
bufw.close();
fw.close();
} catch(Exception e) {
e.printStackTrace();
} //*************************** File file = new File("C:\\B.txt");
try {
FileReader fr = new FileReader(file);
BufferedReader bufr = new BufferedReader(fr);
sql = con.prepareStatement("insert into mytable(?,?,?,?,?,?,?,?,?,?,?)");
String s = null;
System.out.println("字符串分割:");
while((s = bufr.readLine())!=null) { //让s等于每一行
String[] arr = s.split(",");
for(int x=0;x<11;x++) {
sql.setString(x+1,arr[x]);
}
sql.executeUpdate();
}
sql = con.prepareStatement("select* from mytable");
res = sql.executeQuery("select* from mytable");
while(res.next()){
String aa = res.getString("纵行1");
String bb = res.getString("纵行2");
String cc = res.getString("纵行3");
String dd = res.getString("纵行4");
String ee = res.getString("纵行5");
String ff = res.getString("纵行6");
String gg = res.getString("纵行7");
String hh = res.getString("纵行8");
String ii = res.getString("纵行9");
String jj = res.getString("纵行10");
String kk = res.getString("纵行11");
System.out.print("||"+aa);
System.out.print("||"+bb);
System.out.print("||"+cc);
System.out.print("||"+dd);
System.out.print("||"+ee);
System.out.print("||"+ff);
System.out.print("||"+gg);
System.out.print("||"+hh);
System.out.print("||"+ii);
System.out.print("||"+jj);
System.out.print("||"+kk);
System.out.println();
System.out.println();
}
sql.executeUpdate("delete from mytable"); bufr.close();
fr.close();
} catch(Exception e ) {
e.printStackTrace();
}
}
}

然后就成功了,嘻嘻开心。

Java&mysql:过滤文件内容,将新文件内容存入mysql数据库的更多相关文章

  1. .NET Core中复制源文件夹下的所有内容到新文件夹

    .NET Core中没有原生的复制文件夹方法,我们可以自己写个: 新建一个.NET Core控制台项目,示例代码如下: using System; using System.IO; namespace ...

  2. linux过滤旧文件中的空行和注释行剩余内容组成新文件

    一.说明 在某些场景下我们想要将旧文件中空行和注释行过滤掉,将产生实际效果的行保留. 比如redis提供的配置示例文件中有很多用于说明的空行和注释行,我们想把产生实际效果的配置行筛选出来组成新的简洁的 ...

  3. java小程序,用java在指定目录或以及子目录中找出同名文件,java File过滤文件名后找同名文件

    主要是使用java API“java.io.File”实现 一个简单的类,copy出来,因main方法可直接运行. package com.paic.icore.pams.auto.util; imp ...

  4. 计算机二级-C语言-程序填空题-190117记录-对文件的处理,复制两个文件,往新文件中写入数据。

    //给定程序的功能是,调用函数fun将指定源文件中的内容赋值到指定目标文件中,复制成功时函数返回1,失败时返回0,把复制的内容输出到终端屏幕.主函数中源文件名放在变量sfname中,目标文件名放在变量 ...

  5. 全国大学列表文件(较新)+ nodejs导入mongodb数据库

    直接上代码 'use strict' var fs=require('fs'), mongodb=require('mongodb').MongoClient, assert=require('ass ...

  6. 使用bs4对海投网内容信息进行提取并存入mongodb数据库

    example:    http://xyzp.haitou.cc/article/722427.html 首先是直接下载好每个页面,可以使用 os.system( "wget " ...

  7. mysql数据文件迁移到新的硬盘分区的方法

    该系统增加了一个硬盘.要创建新的分区/data文件夹,mysql对于数据文件夹/var/lib/mysql 1.  停止mysql维修 [root@localhost~]# service mysql ...

  8. 文件处理seek以及修改内容的两种方式

    f.seek(offset,whence)offset代表文件的指针的偏移量,单位是字节byteswhence代表参考物,有三个取值# 0:参照文件的开头# 1:参照当前文件指针所在位置# 2: 参照 ...

  9. Storm监控文件夹变化 统计文件单词数量

    监控指定文件夹,读取文件(新文件动态读取)里的内容,统计单词的数量. FileSpout.java,监控文件夹,读取新文件内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

随机推荐

  1. 关于Git GUI的使用方式

    1.选择Clone Existing Repository 2.选择clone地址和存放位置,然后clone 3失败 4如果失败,让对方去这里(github的界面)邀请下,如果是自己就不用 5然后等待 ...

  2. ZooKeeper 系列(二)—— Zookeeper单机环境和集群环境搭建

    一.单机环境搭建         1.1 下载         1.2 解压         1.3 配置环境变量         1.4 修改配置         1.5 启动         1. ...

  3. 系统学习 Java IO (十六)----这么多类,应该用哪个?

    目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...

  4. Java学习笔记——设计模式之十.观察者模式

     观察者模式(Observer),定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己. Subject类: ...

  5. [apue] 多进程管道读写的一些疑问

    对于一对一的pipe: 1) 写进程关闭写管道后,读进程继续读管道会导致read返回0: 2) 读进程关闭读管道后,写进程继续写管道会激发SIGPIPE信号,若捕获,则write返回-1: 而对于多对 ...

  6. 并发编程-concurrent指南-阻塞双端队列-链阻塞双端队列LinkedBlockingDeque

    LinkedBlockingDeque是双向链表实现的阻塞队列.该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头和尾同时操作(插入/删除): 在不能够插入元素时,它将阻塞住试图插入元 ...

  7. jsp传值

    是由a1.jsp发出请求然后由a2.jsp转发给ok.jsp,由ok.jsp响应a1.jsp. 但是这个转发过程是在服务端发生的,客户端不知道所以地址是不变的 转发请求的代码: request.get ...

  8. scrapy基础知识之 CrawlSpiders爬取lagou招聘保存在mysql(分布式):

    items.py import scrapy class LagouItem(scrapy.Item): # define the fields for your item here like: # ...

  9. 事务的隔离级别,mysql默认的隔离级别是什么?

    读未提交(Read uncommitted),一个事务可以读取另一个未提交事务的数据,最低级别,任何情况都无法保证. (1)所有事务都可以看到其他未提交事务的执行结果 (2)本隔离级别很少用于实际应用 ...

  10. 使用Optional摆脱NPE的折磨

    在目前的工作中,我对Java中的Stream和Lambda表达式都使用得很多,之前也写了两篇文章来总结对应的知识. 024:Java流实现Shell:cat 1.log | grep a | sort ...