java 文本写入文件_java实现对文本文件内容的读取与将内容写入到文本文件

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="\\|";//这里竖线需要被转义一下

public static void main(String[] args) {//执行测试

// 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())) {

//这里看操作系统的编码集,一般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("本次共导入数据 "+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");//对于文件状态,01表示未导出,02表示导出中,03表示已导出成功.

List 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) {//如果更新操作顺利执行

out.write(student.toString());//具体格式参照toString

stu.setFile_status("03");

if(true) {

count+=1;

}

}else {

System.out.println("更新当前条数失败 ID为 "+student.getId());

}

}

System.out.println("本次共成功导出文到文件 "+count+" 条");

}else {

System.out.println("未能查询到需要导出的数据");

}

} catch (Exception e) {

System.out.println("writeToTxt error");

}finally {

out.flush();

out.close();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值