写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂!
[java] view plain copypackage edu.thu.keyword.test
import java.io.File
import java.io.InputStreamReader
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.FileInputStream
import java.io.FileWriter
public class cin_txt {
static void main(String args[]) {
try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw
/* 读入TXT文件 */
String pathname = "D:\\twitter\\13_9_6\\dataset\\en\\input.txt" // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径
File filename = new File(pathname) // 要读取以上路径的input。txt文件
InputStreamReader reader = new InputStreamReader(
new FileInputStream(filename)) // 建立一个输入流对象reader
BufferedReader br = new BufferedReader(reader) // 建立一个对象,它把文件内容转成计算机能读懂的语言
String line = ""
line = br.readLine()
while (line != null) {
line = br.readLine() // 一次读入一行数据
}
/* 写入Txt文件 */
File writename = new File(".\\result\\en\\output.txt") // 相对路径,如果没有则要建立一个新的output。txt文件
writename.createNewFile() // 创建新文件
BufferedWriter out = new BufferedWriter(new FileWriter(writename))
out.write("我会写入文件啦\r\n") // \r\n即为换行
out.flush() // 把缓存区内容压入文件
out.close() // 最后记得关闭文件
} catch (Exception e) {
e.printStackTrace()
}
}
}
Java中将txt文件导入到mysql基本的思路就是先使用I/O *** 作流获取到文件具体信息,然后将信息拼接成mysql插入到数据库中,示例如下:1、先读取txt文件的内容,文件内容可以按照一定的规律进行排列,这样程序读取就方便。
import java.io.IOException
import java.io.RandomAccessFile
import java.io.UnsupportedEncodingException
import java.text.SimpleDateFormat
import java.util.Date
import java.util.regex.Matcher
import java.util.regex.Pattern
import com.config.Constants
import com.utils.UUIDUtil
/**
* txt文本数据 采集类
*
* @see
*/
public class UserDataGather {
public static final String TXT_FILE_PATH = "D://testUser.txt"
public static final String openFileStyle = "r"
public static final String fieldLimitChar = "."
public static final int fieldAllCount = 1
public static final String default_password = "PTMD0309"
public Integer count = 0
private String FltNum
public String UUID
/**
* 功能:解析文本文件
*/
public void loadFile() {
try {
RandomAccessFile raf = new RandomAccessFile(TXT_FILE_PATH, openFileStyle)
String line_record = raf.readLine()
while (line_record != null) {
// 解析每一条记录
parseRecord(line_record)
line_record = raf.readLine()
}
} catch (Exception e) {
e.printStackTrace()
}
}
/**
* 功能:具体解析每一条记录,这里可以增加很多对记录的解析判断条件,如是否为字母、
*/
@SuppressWarnings("static-access")
private void parseRecord(String line_record) throws Exception {
//拆分记录
//String[] fields = line_record.split(fieldLimitChar)
//System.out.println(tranStr(line_record)+"Ok")
String temp = line_record.substring(line_record.indexOf(fieldLimitChar, 0), line_record.indexOf(" ", line_record.indexOf(fieldLimitChar, 0)))
//if (fields.length == fieldAllCount) {
//
FltNum = tranStr(temp).trim().replace(fieldLimitChar,"").replace(" ","")
//System.out.println(FltNum)
if(FltNum.length()>=4){
if(!isNumeric(FltNum)){
// System.out.println(generateSql(FltNum)[0].toString())
// System.out.println(generateSql(FltNum)[1].toString())
count++
String[] temp1 = generateSql(FltNum)
MyFile mf = new MyFile()
mf.creatTxtFile("insertPinTuUserSql")
mf.writeTxtFile(temp1[0].toString())
mf.creatTxtFile("UUID")
mf.writeTxtFile(temp1[1].toString()+",")
}
}else if(FltNum.length() ==2 || FltNum.length() ==3){
if(!isNumeric(FltNum)){
if(!isTwoCharacter(FltNum)){
// System.out.println(generateSql(FltNum)[0].toString())
// System.out.println(generateSql(FltNum)[1].toString())
count++
String[] temp2 = generateSql(FltNum)
MyFile mf = new MyFile()
mf.creatTxtFile("insertPinTuUserSql")
mf.writeTxtFile(temp2[0].toString())
mf.creatTxtFile("UUID")
mf.writeTxtFile(temp2[1].toString()+",")
}
}
}
//InsertDB db = new InsertDB()
//
//db.insertDB(FltNum)
//}
}
@SuppressWarnings("static-access")
public String[] generateSql(String userName) throws IOException{
StringBuffer sbf = new StringBuffer()
String[] str = new String[2]
String uuid = UUIDUtil.getUUID()
sbf.append("insert into user values('"+uuid+"','" + userName +"','"+default_password+"',"+Constants.ENABLED+","+Constants.NUllDELETE+","+Constants.AUDITING+",'"+uuid+"@164.com','"+formatDateTime()+"',"+Constants.REGEDIT_USER+")/n")
sbf.append("insert into users values('"+uuid+"',"+ null+","+Constants.MALE+","+null+","+null+",'60.176.36.250','"+formatDateTime()+"',"+null+","+null+","+null+","+null+","+null+","+null+",0,"+null+","+null+",0,0,0,'"+formatDateTime()+"','1036',0,"+null+","+null+","+null+","+null+","+null+",'11',"+null+","+null+","+null+","+null+","+null+")/n")
sbf.append("insert into user_user_group values('"+uuid+"','"+ uuid +"','"+Constants.PERSONAL_USER+"')/n")
UUID = uuid
str[0]=sbf.toString()
str[1]=UUID
return str
}
public String formatDateTime(){
Date date = new Date()
/**
* 时间格式化2009-12-31 09:04:31
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
System.out.println(sdf.format(date))
return sdf.format(date)
}
private String tranStr(String oldstr) {
String newstr = ""
try {
newstr = new String(oldstr.getBytes("ISO-8859-1"), "utf-8")
} catch (UnsupportedEncodingException e) {
e.printStackTrace()
}
return newstr
}
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*")
return pattern.matcher(str).matches()
}
public static boolean isTwoCharacter(String str){
String regEx="[a-zA-Z0-9]{2,3}"
Pattern p=Pattern.compile(regEx)
Matcher m=p.matcher(str)
return m.find()
}
}
2、连接数据库执行数据导入
import java.sql.DriverManager
import java.sql.ResultSet
import com.mysql.jdbc.Connection
import com.mysql.jdbc.Statement
/**
* 插入数据库 生成sql语句
*
* created on Mar 8, 2010
* @see
*/
public class InsertDB {
private static final String user = "pintu"
private static final String pwd = "pintu"
private static final String url = "jdbc:mysql://192.168.10.6:3306/pintu"
private static final String driver = "com.mysql.jdbc.Driver"
public static Connection getCon() {
Connection con = null
try {
Class.forName(driver).newInstance()
con = (Connection) DriverManager.getConnection(url, user, pwd)
if (con != null) {
System.out.println("你已连接到数据库:" + con.getCatalog())
}
} catch (Exception e) {
System.out.println("连接数据库失败!")
e.printStackTrace()
}
return con
}
public boolean insertDB(String FltNum) {
Connection con = null
Statement stm = null
boolean flag = false
String sql = "insert into t_FltPsgInfo values('" + FltNum +
//"','"
//+ FltLine + "','" + FltDate + "','" + PsgName + "','" + PsgType
//
//+ "','" + PsgSex + "','" + PsgCab + "','" + PsgSeatNo + "','"
//
//+ PsgInfo +
"')"
try {
con = getCon()
stm = (Statement) con.createStatement()
int i = stm.executeUpdate(sql)
if (i >0) {
flag = true
System.out.println(flag + "插入数据成功!")
}
} catch (Exception e) {
flag = false
e.printStackTrace()
} finally {
close(null, stm, con)
}
return flag
}
//关闭相关连接
public void close(ResultSet rs, Statement stm, Connection con) {
if (rs != null)
try {
rs.close()
} catch (Exception e) {
e.printStackTrace()
}
if (stm != null)
try {
stm.close()
} catch (Exception e) {
e.printStackTrace()
}
if (con != null)
try {
con.close()
} catch (Exception e) {
e.printStackTrace()
}
}
}
BufferedReader inputtry {
String s = new String()
input = new BufferedReader(new FileReader("f:\\123.txt"))
while ((s = input.readLine()) != null) { // 判断是否读到了最后一行
String info[] = s.split(" ")
System.out.println( info[0] + " " + info[1] + " " + info[2] )
}
input.close()
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
把info[0] + " " + info[1] + " " + info[2] 这三个值放在insert语句里就行了 经过测试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)