import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import org.apache.log4j.Logger; public class FileUtil
{
static Logger logger; static {
FileUtil.logger = Logger.getLogger((Class)FileUtil.class);
}
public static <T> T readFile(final String filePath, T container, final String encode) {
try {
final File file = new File(filePath);
if (!file.exists()) {
FileUtil.logger.info((Object)("file " + filePath + " does not exists."));
return container;
}
final FileInputStream fis = new FileInputStream(file);
final InputStreamReader isr = new InputStreamReader(fis, (encode == null) ? "GBK" : encode);
final BufferedReader br = new BufferedReader(isr);
if (container instanceof List) {
final List list = (List)container;
String string = null;
while ((string = br.readLine()) != null) {
list.add(string);
}
}
else if (container instanceof String[]) {
String string2 = null;
final List<String> list2 = new ArrayList<String>();
while ((string2 = br.readLine()) != null) {
list2.add(string2);
}
final int count = list2.size();
final String[] strings = new String[count];
for (int i = 0; i < count; ++i) {
strings[i] = list2.get(i);
}
container = (T)(Object)strings;
}
else if (container instanceof Map) {
String string2 = null;
final Map map = (Map)container;
while ((string2 = br.readLine()) != null) {
final int a = string2.indexOf("=");
if (a != -1) {
map.put(string2.substring(0, a), string2.substring(a + 1));
}
}
}
else if (container instanceof byte[]) {
container = (T)getInputStreamBytes(fis);
}
br.close();
isr.close();
fis.close();
}
catch (Exception e1) {
FileUtil.logger.error((Object)"", (Throwable)e1);
}
return container;
} public static <T> T readFile(final InputStream is, T container, final String encode) {
try {
final InputStreamReader isr = new InputStreamReader(is, (encode == null) ? "GBK" : encode);
final BufferedReader br = new BufferedReader(isr);
if (container instanceof List) {
final List list = (List)container;
String string = null;
while ((string = br.readLine()) != null) {
list.add(string);
}
}
else if (container instanceof String[]) {
String string2 = null;
final List<String> list2 = new ArrayList<String>();
while ((string2 = br.readLine()) != null) {
list2.add(string2);
}
final int count = list2.size();
final String[] strings = new String[count];
for (int i = 0; i < count; ++i) {
strings[i] = list2.get(i);
}
container = (T)(Object)strings;
}
else if (container instanceof Map) {
String string2 = null;
final Map map = (Map)container;
while ((string2 = br.readLine()) != null) {
final int a = string2.indexOf("=");
if (a != -1) {
map.put(string2.substring(0, a), string2.substring(a + 1));
}
}
}
else if (container instanceof byte[]) {
container = (T)getInputStreamBytes(is);
}
br.close();
isr.close();
is.close();
}
catch (Exception e1) {
FileUtil.logger.error((Object)"", (Throwable)e1);
}
return container;
} public static void writeFile(final String directory, final String filename, final String encode, final Object... objs) {
try {
if (objs != null && objs.length > 0) {
final File file = new File(directory);
if (!file.exists()) {
file.mkdirs();
}
final FileOutputStream fos = new FileOutputStream(String.valueOf(directory) + "/" + filename);
final OutputStreamWriter osw = new OutputStreamWriter(fos, (encode == null) ? "GBK" : encode);
final BufferedWriter bw = new BufferedWriter(osw);
if (objs.length > 1) {
for (int len = objs.length, i = 0; i < len; ++i) {
final Object object = objs[i];
bw.write((object == null) ? "" : object.toString());
if (i != len - 1) {
bw.newLine();
}
}
}
else if (objs[0] instanceof List) {
final List list = (List)objs[0];
final Iterator iterator = list.iterator();
Object object = null;
while (true) {
if (iterator.hasNext()) {
object = iterator.next();
bw.write((object == null) ? "" : object.toString());
}
if (!iterator.hasNext()) {
break;
}
bw.newLine();
}
}
else if (objs[0] instanceof String[]) {
final String[] objects = (String[])objs[0];
for (int len2 = objects.length, j = 0; j < len2; ++j) {
final String object2 = objects[j];
bw.write((object2 == null) ? "" : object2);
if (j != len2 - 1) {
bw.newLine();
}
}
}
else if (objs[0] instanceof Map) {
final Map map = (Map)objs[0];
final int size = map.size();
int count = 0;
for (final Object key : map.keySet()) {
final Object value = map.get(key);
bw.write(String.valueOf((key == null) ? "" : key.toString()) + "=" + ((value == null) ? "" : value.toString()));
if (++count != size) {
bw.newLine();
}
}
}
else if (objs[0] instanceof byte[]) {
final byte[] bs = (byte[])objs[0];
fos.write(bs);
}
else {
bw.write(objs[0].toString());
}
bw.close();
osw.close();
fos.close();
}
}
catch (Exception e) {
FileUtil.logger.error((Object)"", (Throwable)e);
}
} public static <T> T readFileSafely(final String filePath, final T container) {
final String encode = getEncoding(filePath);
return readFile(filePath, container, encode);
} public static void repOldStr(final File file, final String oldStr, final String newStr) {
final String encode = getEncoding(file.getPath());
final List<String> list = readFile(file.getPath(), new ArrayList<String>(), encode);
final List<String> list2 = new ArrayList<String>();
for (String str : list) {
str = str.replace(oldStr, newStr);
list2.add(str);
}
writeFile(file.getParent(), file.getName(), encode, list2);
} private static byte[] getInputStreamBytes(final InputStream is) throws IOException {
final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
final byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
final byte[] data = outStream.toByteArray();
return data;
} public static boolean appendFile(final String filepath, final String... content) {
if (content == null || content.length == 0) {
return true;
}
try {
final FileWriter fw = new FileWriter(filepath, true);
for (int i = 0; i < content.length; ++i) {
final String s = content[i];
fw.write(String.valueOf(s) + "\r\n");
}
fw.close();
return true;
}
catch (Exception e) {
FileUtil.logger.error((Object)"", (Throwable)e);
return false;
}
}
public static String getEncoding(final String filepath) {
return EncodingDetect.getJavaEncode(filepath);
}
public static void main(String[] args) {
String file = "C:\\Users\\lenovo\\Downloads\\a.log";
String encode=EncodingDetect.getJavaEncode(file);
System.out.println(encode);
}
}

FileUtil(from logparser)的更多相关文章

  1. android-HttpClient上传信息(包括图片)到服务端

    需要下载apache公司下的HttpComponents项目下的HTTPCLIENT ----------地址为http://hc.apache.org/downloads.cgi 主要是用到了htt ...

  2. 用开源项目CropImage实现图片的裁剪(不推荐)

       之前介绍过一个截图的办法(http://www.cnblogs.com/tianzhijiexian/p/3900241.html),这里再分享个开源项目.它也是截图,但是效果不是很好,首先还是 ...

  3. 规则引擎 - drools 使用讲解(简单版) - Java

    drools规则引擎 项目链接 现状: 运维同学(各种同学)通过后台管理界面直接配置相关规则,这里是通过输入框.下拉框等完成输入的,非常简单: 规则配置完毕后,前端请求后端,此时服务端根据参数(即规则 ...

  4. 结对作业:四则运算(Java+JavaFX)

    一.简介 此程序是一个可自动生成,计算小学四则运算题目的项目. Github地址:https://github.com/czmDeRepository/SoftwareWork/tree/master ...

  5. JAVA 进行图片中文字识别(准确度高)!!!

    OCR 识别文字项目 该项目 可以进行两种方式进行身份证识别 1. 使用百度接口 1.1 application-dev.yml配置 ocr: # 使用baiduOcr 需要有Ocr服务器 使用百度需 ...

  6. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  7. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  8. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  9. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

随机推荐

  1. Office 365 如何使用powershell查询邮件追踪

    如何使用Powershell 对office365的邮件进行查询追踪 1. 首先链接到Exchange Online 管理上面 $UserCredential = Get-Credential $Se ...

  2. php class

    一个类可以包含有属于自己的常量,变量(称为"属性")以及函数(称为"方法"). $ 变量--专业术语上称它为"属性".  function ...

  3. Python json.dumps 特殊数据类型的自定义序列化操作

    场景描述: Python标准库中的json模块,集成了将数据序列化处理的功能:在使用json.dumps()方法序列化数据时候,如果目标数据中存在datetime数据类型,执行操作时, 会抛出异常:T ...

  4. 关于push数组,然后遍历数组遇到的坑,遍历显示函数

    我偷了个懒将点击的东西push进一个arr里,然后遍历显示在上面. 为啥子出现了上函数,什么鬼什么鬼.我检查很久都不晓得那里push进去的. 一个小时后,我想想要不看看arr里面的结构吧! 尼玛!为啥 ...

  5. 数据结构作业——expectation(树形dp+dfs)

    expectation Description 给出一棵带权值的树,我们假设从某个节点出发,到目标节点的时间为两个节点之间的最短路.由于出发节点不好选取,所以选在每个节点都有一定的概率,现在我们要求从 ...

  6. oracle--逻辑对象--bai

    1 序列 sequence oracle特有.实现"自增"或"自减"的逻辑对象. 2 同义词 synonym 对表取别名,该别名被永久存储. 比视图更省资源. ...

  7. Java中堆的实现类PriorityQueue队列接口Queue

    Application:这层的职责是对接收到的数据做一些非业务性验证,事务的控制,最重要的是协调多个聚合之间的操作.这里应该可以清晰的表达出整个操作所做的事情,并且与通用语言是一致的. 以上我们讲到可 ...

  8. PHP获取上周、本周、上月、本月、本季度、上季度时间方法大全

    <?php     echo date("Ymd",strtotime("now")), "\n";     echo date(&q ...

  9. JVM专题目录

    1.Java虚拟机及运行时数据区 2.JVM内存垃圾回收方法 3.JVM内存分配策略 4.HotSpot JVM常用参数设置

  10. php sleep

    实例一:把时间输出十次,但全部有结果了,才在html浏览器页面输出 ;$i<;$i++){ echo time()."<br>"; sleep(); } echo ...