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. 移动端开发viewport深入理解(转)

    一.viewport的概念   移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,就是浏览器上用来显示网页的那部分区域,但viewport不局限于浏览器可视区域 的大小,它 ...

  2. UOJ58 【WC2013】糖果公园

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  3. jedis支持哨兵主从配置role为slave

    jedis功能强大,但是不能像nodejs一样指定从slave中读数据,使数据量读写量较大时读写分离,减少redis压力. 我们可以利用jedis中的方法封装一个类似于此的方法. github地址: ...

  4. mysql 控制台 快捷方式

    程序--附件--命令提示符 cd C:\Program Files\MySQL\MySQL Server 5.5\bin 我安装的5.5的默认目录,或者也可以增加path路径,直接打开cmd就可以登陆 ...

  5. [HttpPost]和[AcceptVerbs(HttpVerbs.Post)]区别

    1.共同点:[HttpPost]和[AcceptVerbs(HttpVerbs.Post)]都是只接受POST请求过来的数据. 2.不同点:在MVC中如果想一个action既可以回应POST请求也可以 ...

  6. U盘容量变小解决办法

    之前买了个三星闪盘,容量32G,USB3.0 后来装了U盘系统Kali Linux,最近想用的时候发现容量变为6GB了,真的很奇怪. 于是万能的百度(别说为什么不用谷歌,防火墙呀...) 找到解决办法 ...

  7. [译]Writing Custom Middleware in ASP.NET Core 1.0

    原文: https://www.exceptionnotfound.net/writing-custom-middleware-in-asp-net-core-1-0/ Middleware是ASP. ...

  8. Excel—SUMPRODUCT用法指南

    1.最简单的SUMPRODUCT函数等同与SUM函数. 2.SUMPRODUCT可以设置多参数,其输出值为各参数对应值的乘积之和. E2=6*7+8*6+2*8+9*8+3*8+5*9 3.SUMPR ...

  9. 2012Chhengdu K - Yet Another Multiple Problem

    K - Yet Another Multiple Problem Time Limit:20000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  10. Hibernate连接mysql数据库的配置

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...