本文內(nèi)容
- java實現(xiàn)對文件內(nèi)容的讀取诺凡,暫時未完善插入數(shù)據(jù)庫部分
- 將內(nèi)容寫入到文本文件耘婚,暫時未完善從數(shù)據(jù)庫查詢部分
前置知識
- IO流
- Exception
- Eclipse/IDEA 等工具
- JDBC/Hibernate/Mybatis/JPA 等
問題
- 配合定時任務(wù),將文本中數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫
- 對于數(shù)據(jù)庫的信息可以寫入到文本中方便客服修改
- 導(dǎo)出到文件時,根據(jù)文件狀態(tài)進行指定需要導(dǎo)出的數(shù)據(jù)
- 文件導(dǎo)出完畢,則該條信息的文件狀態(tài)為已導(dǎo)出
package club.model;
import java.util.Date;
public class Student {
private String id;//編號
private String name;//姓名
private String gender;//性別
private Integer age;//年齡
private Double score;//分數(shù)
private String file_status;//文件狀態(tài)
private Date file_time;//文件日期.方便后期管理
private String remark;//備注
//get和set方法此處省略
//toString方法此處省略
}
package club.utils;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.RandomAccessFile;
import java.util.List;
import club.model.Student;
public class ImportInfoFromText {
public static final String OPEN_FILE_STYLE="r"; //r=read
public static final String FIELLD_LIMIT_CHAR="\\|";//這里豎線需要被轉(zhuǎn)義一下
public static void main(String[] args) {//執(zhí)行測試
// String filePath="/home/left/Downloads/test.txt";
String filePath="D:\\test.txt";
readFromText(filePath);
}
/**
* 從文本中讀取信息
* @param filePath
*/
public static int readFromText(String filePath) {
String line_record=null;
int count=0;
try {
RandomAccessFile raf=new RandomAccessFile(filePath, OPEN_FILE_STYLE);
while(null!=(line_record=raf.readLine())) {
//這里看操作系統(tǒng)的編碼集,一般Windows中文默認是GBK,Linux是UTF-8
line_record=new String(line_record.getBytes("ISO-8859-1"),"GBK");
Student stu = parseRecord(line_record);
System.out.println(stu);
count+=1;
}
System.out.println("本次共導(dǎo)入數(shù)據(jù) "+count+" 條");
} catch (FileNotFoundException ef) {
ef.printStackTrace();
} catch (IOException ei) {
ei.printStackTrace();
}
return count;
}
/**
*
* @param line_record
* @return
*/
public static Student parseRecord(String line_record){
Student stu=new Student();
String[] fields=line_record.split(FIELLD_LIMIT_CHAR);//拆分塊記錄
stu.setId(fields[0]);
stu.setName(fields[1]);
stu.setGender(fields[2]);
stu.setAge(Integer.parseInt(fields[3]));
stu.setScore(Double.parseDouble(fields[4]));
return stu;
}
public void writeToTxt(String path,String fileName) throws IOException {
Student stu=new Student();
stu.setFile_status("01");//對于文件狀態(tài),01表示未導(dǎo)出,02表示導(dǎo)出中,03表示已導(dǎo)出成功.
List<Student> stus=null;//通過查詢得到
int count=0;
OutputStreamWriter out=new OutputStreamWriter(new FileOutputStream(path+fileName,true), "UTF-8");
try {
if(stus.size()>0) {
for (Student student : stus) {
stu.setId(student.getId());
stu.setFile_status("02");
if(1==2) {//如果更新操作順利執(zhí)行
out.write(student.toString());//具體格式參照toString
stu.setFile_status("03");
if(true) {
count+=1;
}
}else {
System.out.println("更新當前條數(shù)失敗 ID為 "+student.getId());
}
}
System.out.println("本次共成功導(dǎo)出文到文件 "+count+" 條");
}else {
System.out.println("未能查詢到需要導(dǎo)出的數(shù)據(jù)");
}
} catch (Exception e) {
System.out.println("writeToTxt error");
}finally {
out.flush();
out.close();
}
}
}
0001|小明|1|18|100
0002|小紅|1|17|95
0003|小剛|1|17|90
0004|小麗|1|18|100
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者