在上一篇博文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. abp(net core)+easyui+efcore仓储系统——创建应用服务(五)

    abp(net core)+easyui+efcore仓储系统目录 abp(net core)+easyui+efcore仓储系统——ABP总体介绍(一) abp(net core)+easyui+e ...

  2. vue.js与后台模板引擎“双花括号”冲突时的解决办法

    后台渲染模板如swig,也使用“{{ }}“作为渲染,与前端vue的产生冲突,此时只要在新建Vue对象时,添加delimiters: ['${', '}'],就搞定了,代码如下 <!DOCTYP ...

  3. JSON对象和JavaScript对象直接量的区别--不同之处

    JSON对象和JS对象直接量 在工作当中,我们总是可以听到人说将数据转换为JSON对象,或者说把JSON对象转换为字符串之类的话,下面是关于JSON的具体说明. JSON对象并不是JavaScript ...

  4. java finally块执行时机分析

    java里 finally 关键字通常与try catch块一起使用.用来在方法结束前或发生异常时做一些资源释放的操作.最近也看到网上有一些讨论try catch finally关键词执行的顺序的文章 ...

  5. Java中到底是值传递还是引用传递?

    Java中到底是值传递还是引用传递? 我们先回顾一下基本概念 实参和形参 参数在编程语言中是执行程序需要的数据,这个数据一般保存在变量中.在Java中定义一个方法时,可以定义一些参数, 举个例子: p ...

  6. 深入理解Java类加载

    本文目的: 深入理解Java类加载机制; 理解各个类加载器特别是线程上下文加载器; Java虚拟机类加载机制 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最 ...

  7. 【HDU - 2181】哈密顿绕行世界问题(dfs+回溯)

    -->哈密顿绕行世界问题 Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市.  Input 前2 ...

  8. POJ 1743:Musical Theme(后缀数组+二分)

    题目链接 题意 有N个音符的序列来表示一首乐曲,每个音符都是1到88范围内的整数,现在要找一个重复的主题."主题"是整个音符序列的一个子串,它需要满足如下条件: 长度至少为5个音符 ...

  9. 读取ClassPath下resource文件的正确姿势

    1.前言 为什么要写这篇文章?身为Java程序员你有没有过每次需要读取 ClassPath 下的资源文件的时候,都要去百度一下,然后看到下面的这种答案: Thread.currentThread(). ...

  10. 【原创】面试官:讲讲mysql表设计要注意啥

    引言 近期由于复习了一下mysql的内容,有些心得.随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验.大家看完,其实能避开很多坑.而且很多问题,都是面试中实打实会问到的! 比如 OK,具体 ...