• java文件工具类


    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.commons.io.LineIterator;
    
    /**
     * 文件工具类
     * 2017-05-12
     */
    public class FileUtil {
        
        public static void createDir(String destDirName) {
            File dir = new File(destDirName);
            if (!dir.exists()) {// 判断目录是否存在
                dir.mkdir();
                //dir.mkdirs();  //多层目录需要调用mkdirs
            }
        }
        
         public static File writeToFile(String content, String filePath) throws IOException {
             FileWriter fw = null;
             BufferedWriter bw = null;
             File file = null;
             try {
                 file = new File(filePath);
                 if (!file.exists()) {
                     file.createNewFile();
                 }
                 fw = new FileWriter(file.getAbsoluteFile());
                 bw = new BufferedWriter(fw);
                 bw.write(content);
                 bw.flush();// 清空缓冲区  
              } catch (IOException e) {
                  e.printStackTrace();
              } finally {
                  if(bw != null) {
                      bw.close();
                  }
                  if (fw != null) {
                      fw.close();
                  }
              }
             return file;
        }
         
        public static List<String[]> readTxtFile(File file) {
            LineIterator lineIterator = null;
            List<String[]> list = null;
            try {
                lineIterator = FileUtils.lineIterator(file, "UTF-8");
                list = new ArrayList<String[]>();
                int lineNum = 0;
                while (lineIterator.hasNext()) {
                    String line = lineIterator.nextLine();
                    // 行数据转换成数组
                    String[] custArray = line.split("\|");
                    list.add(custArray);
                    lineNum++;
                    if (lineNum % 1000 ==0) {
                        Thread.sleep(10);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                if (lineIterator != null) {
                    LineIterator.closeQuietly(lineIterator);
                }
            }
            return list;
        }
        
        /**
         * 统计文件行数
         * @param file
         * @return
         * @throws IOException
         */
        public static int getTextLines(File file) throws IOException {
           FileReader fr = new FileReader(file);   //这里定义一个字符流的输入流的节点流,用于读取文件(一个字符一个字符的读取)
           BufferedReader br = new BufferedReader(fr);  // 在定义好的流基础上套接一个处理流,用于更加效率的读取文件(一行一行的读取)
           int x = 0;   // 用于统计行数,从0开始
           while(br.readLine() != null) { //  readLine()方法是按行读的,返回值是这行的内容
               x++;   // 每读一行,则变量x累加1
           }
           return x;  //返回总的行数
        }
        
        public static Map<String, Object> readBaofuTxtFile(File file) {
            LineIterator lineIterator = null;
            List[] list = null;
            int startNum = 0;
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                lineIterator = FileUtils.lineIterator(file, "UTF-8");
                list = new List[getTextLines(file)];
                int lineNum = 0;
                while (lineIterator.hasNext()) {
                    String line = lineIterator.nextLine();
                    // 行数据转换成数组
                    String[] custArray = line.split("\|");
                    List<Object> rowData = new ArrayList<Object>();
                    for (int i = 0; i < custArray.length; i++) {
                        rowData.add(custArray[i]);
                    }
                    if ("商户号".equals(custArray[0])) {
                        startNum = lineNum + 1;
                    }
                    list[lineNum]=rowData;
                    lineNum++;
                    if (lineNum % 500 ==0) {
                        Thread.sleep(10);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                if (lineIterator != null) {
                    LineIterator.closeQuietly(lineIterator);
                }
            }
            map.put("data", list);
            map.put("startLineNum", startNum);
            return map;
        }
        
        public static void main(String[] args) throws IOException {
            /*String content = "This is the content to write into file";
            String filePath = "c:/test/filename.txt";
            writeToFile(content, filePath);*/
            File file = new File("c:/test/fi_20170515132029.txt");
            /*List list  = readTxtFile(file);
            if (list != null) {
                for (int i = 0; i < list.size(); i++) {
                    String[] s = (String[]) list.get(i);
                    for (int j = 0; j < s.length; j++) {
                        System.out.println(s[j]);
                    }
                }
            }*/
            /*Map<String, Object> map = readBaofuTxtFile(file);
            List[] list =  (List[]) map.get("data");
            for (int i = 0; i < list.length; i++) {
                System.out.println(list[i]);
            }*/
        }
    }
  • 相关阅读:
    Delphi中TFlowPanel实现滚动条效果
    Delphi组件开发-在窗体标题栏添加按钮(使用MakeObjectInstance(NewWndProc),并处理好多消息)
    减小Delphi的Exe文件大小(11种方法)
    画出太极图
    类似地图的以鼠标为中心缩放图像
    andoid x项目的优化 1
    ICON图标文件解析
    所有语言的Awesome(2)
    获取EIP(汇编语言直接给Delphi变量赋值)
    Qt Windows下链接子系统与入口函数(终结版)(可同时存在main和WinMain函数)
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6903569.html
Copyright © 2020-2023  润新知