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. NodeJs入门学习(一)

    NodeJs是针对前端工程师向web后端深入理解的一门很好的语言. 首先,记录NodeJS几大特性,后续补充: 一.Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. ...

  2. 预览github上的html页面

    譬如有个项目:https://github.com/wozhizui/ife/tree/DevTogether/task19 里面有html的示例文件index.html 我们点击进去看到的是一堆代码 ...

  3. 个人作业-Week1

    问题1:程序员的优劣是否在软件开发中已经不重要了??用户实际关心的 外形,使用的乐趣和效率,自我形象,个人满足感,回忆,这么多条中,仅有效率与代码有关,而实际上用户比起效率却更在意其他这些“幺蛾子”. ...

  4. setTimeout 和 throttle 那些事儿

    document.querySelector('#settimeout').onclick= function () { setTimeout(function () { console.log('t ...

  5. 基于Dubbo框架构建分布式服务(一)

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  6. layer弹出框小结

    1.layer.open() // 1.打开弹出层 layer.open({ type:1, //基本层类型 icon:, //图标 content:'请核对信息!', //内容 shade:0.3, ...

  7. href,src,url 整理

    一.href 和 src 的定义及区别 href:Hypertext Reference(超文本引用),指定网络资源的位置,从而在当前元素或者当前文档和由当前属性定义的需要的锚点或资源之间定义一个链接 ...

  8. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  9. 解决httpd: Could not reliably determine the server's fully qualified domain name

    解决方案: 用记事本打开 httpd.conf 将里面的 #ServerName localhost:80 注释去掉即可. 再执行 httpd 然后可以通过浏览器访问 http://localhost ...

  10. Windows快捷键

    一.常见用法: F1 显示当前程序或者windows的帮助内容. F2 当你选中一个文件的话,这意味着“重命名” F3 当你在桌面上的时候是打开“查找:所有文件” 对话框 F10或ALT 激活当前程序 ...