生成和解析txt文件

package txt;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
/**
 * 功能描写叙述:创建TXT文件并进行读、写、改动操作
 * @author lizhiyong
 * @version $Id: ReadWriteFile.java, v 0.1
		2014年8月5日 下午1:27:38 Exp $
 */
public class ReadWriteFile {
    //指定文件路径和名称
    private static String path     = "C:/測试.txt";
    private static File   filename = new File(path);
    private static String readStr  = "    ";

    /**
     * 创建文本文件.
     * @throws IOException
     *
     */
    public static void creatTxtFile() throws IOException {
        if (!filename.exists()) {
            filename.createNewFile();
            System.err.println(filename + "已创建!

");
        } else {
            filename.delete();
            creatTxtFile();
        }
    }

    /**
     * 读取文本文件.
     * @throws UnsupportedEncodingException
     *
     */
    @SuppressWarnings("resource")
    public static String readTxtFile() throws UnsupportedEncodingException {
        String readData = null;
        //BufferedReader br = null;
        BufferedReader br = null;
        try {
            //br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
            br = new BufferedReader(new FileReader(filename));
            try {
                while ((readData = br.readLine()) != null) {
                    System.out.println("readData:" + readData);
                    readStr = readStr + readData + "\r\n";
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        System.out.println("文件内容2是:" + "\r\n" + readStr);
        return readStr;
    }

    /**
     * 给文件写内容.
     * @param content  写入的文件内容
     * @throws IOException
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static void writeTxtFile(List contentList, HashMap<String, String> map)
                                                                                  throws IOException {
        //先读取原有文件内容。然后进行写入操作
        FileWriter writer = null;
        String filein = map.get("1") + readStr + map.get("2") + readStr + map.get("3") + readStr
                        + map.get("4");
        try {
            writer = new FileWriter(filename, true);
            writer.write(filein);
        } catch (IOException e1) {
            e1.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e2) {
                    e2.printStackTrace();
                }
            }
        }

        for (Iterator iterator = contentList.iterator(); iterator.hasNext();) {
            HashMap<String, String> map2 = (HashMap<String, String>) iterator.next();
            String name = map2.get("name");
            String age = map2.get("age");
            String postion = map2.get("postion");
            String complit = map2.get("complit");
            String filein1 = "\r\n" + name + readStr + age + readStr + postion + readStr + complit
                             + "\r\n";
            try {
                writer = new FileWriter(filename, true);
                writer.write(filein1);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (writer != null) {
                    try {
                        writer.close();
                    } catch (IOException e2) {
                        e2.printStackTrace();
                    }
                }
            }

        }

        readTxtFile();
    }

    /**
     * 将文件里指定内容的第一行替换为其他内容.
     *
     * @param oldStr
     *            查找内容
     * @param replaceStr
     *            替换内容
     */
    @SuppressWarnings("unused")
    public static void replaceTxtByStr(String oldStr, String replaceStr) {
        String temp = "";
        try {
            File file = new File(path);
            FileInputStream fis = new FileInputStream(file);
            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isr);
            StringBuffer buf = new StringBuffer();

            // 保存该行前面的内容
            for (int j = 1; (temp = br.readLine()) != null && !temp.equals(oldStr); j++) {
                buf = buf.append(temp);
                buf = buf.append(System.getProperty("line.separator"));
            }

            // 将内容插入
            buf = buf.append(replaceStr);

            // 保存该行后面的内容
            while ((temp = br.readLine()) != null) {
                buf = buf.append(System.getProperty("line.separator"));
                buf = buf.append(temp);
            }

            br.close();
            FileOutputStream fos = new FileOutputStream(file);
            PrintWriter pw = new PrintWriter(fos);
            pw.write(buf.toString().toCharArray());
            pw.flush();
            pw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * main方法測试
     * @param s
     * @throws IOException
     */
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static void main(String[] s) throws IOException {
        ReadWriteFile.creatTxtFile();
        //ReadWriteFile.readTxtFile();
        List list = new ArrayList();
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("1", "姓名");
        map.put("2", "年龄");
        map.put("3", "职位");
        map.put("4", "工作单位");

        HashMap<String, String> map2 = new HashMap<String, String>();
        map2.put("name", "李四");
        map2.put("age", "25");
        map2.put("postion", "Java开发project师");
        map2.put("complit", "上海汽车財务集团有限公司");
        list.add(map2);

        HashMap<String, String> map3 = new HashMap<String, String>();
        map3.put("name", "李四1");
        map3.put("age", "251");
        map3.put("postion", "Java开发project师1");
        map3.put("complit", "上海汽车財务集团有限公司1");
        list.add(map3);

        ReadWriteFile.writeTxtFile(list, map);
        //        ReadWriteFile.replaceTxtByStr("ken", "zhang");
    }
}
时间: 2024-12-29 13:12:07

生成和解析txt文件的相关文章

解析TXT文件步骤

解析TXT文件步骤:1.File file = new file('D:\a.txt');// 创建文件对象2.String code = ReadFile.codeString(file.getAbsolutePath());//获得文件编码3.InputStreamReader read = new InputStreamReader(new FileInputStream(file),code);//使用InputStreamReader读取文件流4.BufferedReader buff

Java基础系列19:使用JXL或者POI生成和解析Excel文件

一 简介 如题所示,当我们需要在Java中解析Excel文件时,可以考虑使用JXL或POI的API来解析. 二者的区别如下: jxl现在基本上没被维护了,最近一次更新时间还是几年前.相反,poi属于Apache开源项目的一部分,更新维护得比较好,最新稳定版 POI 3.15 是今年(2016年)9月更新的,同时poi可以支持更高版本的excel,而jxl只能支持excel2003以及之前的版本 小文件使用jxl解析效率比较高,但是因为支持的excel版本的限制,导致不能导出65535以上量级的数

生成和解析excel文件

package excel; public class BookVO { public String bookName; public String bookAuthor; public String bookPrice; public String bookConcern; public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = boo

利用递归函数随机生成N个TXT文件

import random#导入随机模块def fileduoduo(n):    file_name = random.randint(000000, 999999)#文件名按六位数字随机生成    content = random.randint(000000000,999999999)    n+=1    if n <=50:#假定随机生成50个TXT文件        d = open("%s.txt" % file_name, 'w')#文件名        d.wr

利用Pull生成和解析xml文件

解析xml的方式有很多,可以用dom,sax解析,但是在android平台上最常用是Pull解析,下面是简单的示例 <?xmlversion="1.0" encoding="UTF-8"?> <persons> <person id="18"> <name>allen</name> <age>36</age> </person> <person

php 批量生成html、txt文件

首先建立一个conn.php的文件用来链接数据库 <?php     $link = mysql_connect("mysql_host" , "mysql_user" , "mysql_password" )or die("Could not connect : " . mysql_error());     mysql_query("set names utf8");     mysql_sele

Python操作小结(连接mysql、解析txt文件)

有段时间没有使用python了,对它的语法有点生疏,花了几个小时熟悉,期间发现很多小细节不清楚.为了下次能快速上手,避免重复犯错,我将python使用过程中的一些问题在这篇博文中记录小结一下,主要内容涉及到python操作mysql数据库,和解析txt文本.注:我用的是python2.7版本. 一.导入模块 python的脚本文件里面,可以导入其他脚本文件,并引用其中的方法和参数,使用关键字import.如下: import os,glob,sys 二.基础语法 1.普通变量定义 python

[java] java解析txt文件

/** * 读取txt文件内容封装为map返回 * @param filePath * @return */ public static String readTxt(String filePath){ List<Map<String,Object>> lists= Lists.newArrayList(); try { File file=new File(filePath); InputStreamReader read = new InputStreamReader( new

ABP增加记录EFCore 生成数据库脚本日志到新的txt文件

由于EFCore并没直接生成脚本到txt文件,故而自己画了点时间把实现记录下来,方便给大家参考. 0.安装Microsoft.Extensions.Logging.Debug,我这里是2.1.1版本. 1.新建一个EFCoreDatabaseCmdLog在abp的Core层下, using Abp.Dependency; using Castle.Core.Logging; namespace SensorBroker.Log { public static class EFCoreDataba