zoukankan      html  css  js  c++  java
  • 生成txt文件并且压缩,其中有解决中文问题

    Code:

    /**
    * 生成txt文件并且压缩
    */
    public class Result {
    private Log log;

    Properties properties;

    private File filehave;

    private FileOutputStream writer;

    private PrintWriter pw;

    private Writer out;

    private String mobileType,time,ytime,baseFilename;

    public Result() {
    try {
    intital();

    } catch (IOException iox) {
    System.err.println(iox);
    }

    }

    /**
    * 初始化函数
    * @return
    * @throws IOException
    */
    private void intital() throws IOException {
    log = LogFactory.getLog(Result.class);
    File sdf = new File("");
    System.out.println(sdf.getAbsolutePath());
    properties = new Properties();
    properties.load(new FileInputStream("config.properties"));
    }
    private ArrayList getMidColResData(String Type,int purpose) {

    ArrayList ret = new ArrayList();
    Connection conn = getConn();
    Statement stmt = null;
    ResultSet rs = null;
    try {

    ........数据库操作

    rs.close();
    stmt.close();
    rs = null;
    stmt = null;

    } catch (Exception e) {
    log.debug(e);
    } finally {
    if (rs != null) {
    rs = null;
    }
    if (stmt != null) {
    stmt = null;
    }
    if (conn != null) {
    conn = null;
    }
    }
    return ret;
    }

    //生成/写入txt文件
    public void writeToTXT(String Type,int purpose) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
    time = formatter.format(new Date());

    java.util.Date myDate = new java.util.Date();
    long myTime = (myDate.getTime()/1000) - 60*60*24;
    myDate.setTime(myTime*1000);
    String yDate=formatter.format(myDate);


    //生成txt文件
    try {

    if(mobileType.equals("test")){
    if(purpose == 0){
    baseFilename = "test_" + time + "_01";
    }else if(purpose == 1){
    baseFilename = "test_" + time + "_02";
    }
    }

    //删除昨天的txt文件
    filehave = new File("test_" + yDate + "_01.txt");
    if(filehave.exists()){
    filehave.delete();
    }
    filehave = new File("test_" + yDate + "_02.txt");
    if(filehave.exists()){
    filehave.delete();
    }


    filehave = new File("test_" + yDate + "_01.zip");
    if(filehave.exists()){
    filehave.delete();
    }
    filehave = new File("test_" + yDate + "_02.zip");
    if(filehave.exists()){
    filehave.delete();
    }


    writer = new FileOutputStream(baseFilename + ".txt");

    out = new OutputStreamWriter(writer,"UTF-8");




    } catch (IOException iox) {
    System.err.println(iox);
    }

    //写入txt文件
    try {
    ArrayList list = getMidColResData(mobileType,purpose);
    //建立数据行
    List data = list;
    for (int j = 0; j < data.size(); j++) {
    String[] rows = (String[]) data.get(j);
    for (int k = 0; k < rows.length; k++) {
    out.write(new String(rows[k].getBytes("ISO-8859-1"),"UTF-8"));//整合了的字符串再转换一次(在数据库取数据时已经转换了一次)
    }
    }
    try {

    out.flush();
    writer.close();
    } catch (IOException iox) {
    System.err.println(iox);
    }
    } catch (Exception e) {
    log.debug(e);
    }
    }
    public void zipTXT(){
    // These are the files to include in the ZIP file
    String[] filenames = new String[]{"test" + baseFilename + ".txt"};

    // Create a buffer for reading the files
    byte[] buf = new byte[1024];

    try {
    // Create the ZIP file
    String outFilename = "test" + baseFilename + ".zip";
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));

    // Compress the files
    for (int i=0; i<filenames.length; i++) {
    FileInputStream in = new FileInputStream(filenames[i]);

    // Add ZIP entry to output stream.
    out.putNextEntry(new ZipEntry(filenames[i]));

    // Transfer bytes from the file to the ZIP file
    int len;
    while ((len = in.read(buf)) > 0) {
    out.write(buf, 0, len);
    }

    // Complete the entry
    out.closeEntry();
    in.close();
    }

    // Complete the ZIP file
    out.close();
    } catch (IOException e) {
    }
    }
    public static void main(String args[]) {
    try {
    System.out.println("create TXTFile begin");

    Result test = new Result();


    for (int i = 0; i < 2; i++) {
    test.writeToTXT("test",i);//生成文件
    test.zipTXT();//压缩文件
    }
    for (int i = 0; i < 4; i++) {
    test.writeToTXT("what",i);//生成文件
    test.zipTXT();//压缩文件
    }
    System.out.println("create TXTFile end");

    } catch (Exception e) {
    System.out.println(e.toString());
    }
    }

    }


    再使用>javac -classpath ..... -encoding GBK Result.java
  • 相关阅读:
    Python学习笔记六:集合
    Python学习笔记五:字符串常用操作,字典,三级菜单实例
    Python学习笔记四:列表,购物车程序实例
    Python学习笔记三:数据类型
    python学习笔记二:if语句及循环语句,断点,模块,pyc
    Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序
    JS教程:从0开始
    基于Token认证的多点登录和WebApi保护
    数据库高级对象(存储过程,事务,锁,游标,触发器)
    Sql基础(零基础学数据库_SqlServer版)
  • 原文地址:https://www.cnblogs.com/dkblog/p/1981006.html
Copyright © 2011-2022 走看看