美文网首页
java实现对文本文件内容的读取与将内容写入到文本文件

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

作者: iMUST_Clown | 来源:发表于2019-03-13 13:47 被阅读0次

    本文内容

    • java实现对文件内容的读取,暂时未完善插入数据库部分
    • 将内容写入到文本文件,暂时未完善从数据库查询部分

    前置知识

    • IO流
    • Exception
    • Eclipse/IDEA 等工具
    • JDBC/Hibernate/Mybatis/JPA 等

    问题

    1. 配合定时任务,将文本中数据导入到数据库
    2. 对于数据库的信息可以写入到文本中方便客服修改
    3. 导出到文件时,根据文件状态进行指定需要导出的数据
    4. 文件导出完毕,则该条信息的文件状态为已导出
    • 实体类
    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;//分数
        private String file_status;//文件状态
        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="\\|";//这里竖线需要被转义一下
        
        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<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) {//如果更新操作顺利执行
                            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();
            }
        }
    }
    
    • 文本测试数据
    0001|小明|1|18|100
    0002|小红|1|17|95
    0003|小刚|1|17|90
    0004|小丽|1|18|100
    
    • 读物文件信息测试结果
    读取文件信息测试结果

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/qvizpqtx.html