package com.xiaxing.io;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class FileOperator {
private static final String FILTER = "xxxx - [lineId : ";
private static List<String> mValidNumList = new ArrayList<String>();
public static class Logger {
public Logger() {
}
public static void v(String string) {
System.out.println(string);
return;
}
}
private static int readFileByLine(String filePath) {
File file = new File(filePath);
BufferedReader reader = null;
Integer totallinecount = 0;
Integer validlinecount = 0;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = "";
String curString = "";
String oldString = "";
while ((tempString = reader.readLine()) != null) {
// Logger.v(curString);
if (!tempString.contains(FILTER))
continue;
curString = getValidString(tempString);
if (curString == null) {
Logger.v("********************* error **********************");
}
totallinecount++;
if (oldString.equalsIgnoreCase(curString)) {
oldString = curString;
continue;
}
oldString = curString;
//whether lineid already have
if (mValidNumList.contains(curString)) {
Logger.v("string already have in the list");
continue;
}
mValidNumList.add(curString);
validlinecount++;
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
Logger.v("total line number : " + totallinecount.toString() + "\n"
+ "valid line number : " + validlinecount + "\n"
+ "------------------------- File Read Over " + "\n\n");
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return validlinecount;
}
private static void readDir(String filePath) {
File dir = new File(filePath);
File[] files = dir.listFiles();
int validcount = 0;
for (int i = 0; i < files.length; i++) {
String tempFile = files[i].toString();
Logger.v("------------------------- File Read Start, FileName : "
+ tempFile);
int count = readFileByLine(tempFile);
validcount = validcount + count;
}
Logger.v("======================================" + "\n"
+ "Total valid count : " + validcount + "\n"
+ "======================================");
}
private static String getValidString(String origString) {
String output = null;
String temp = origString;
if (temp.contains(FILTER)) {
int index = temp.indexOf(FILTER);
int count = FILTER.length();
output = temp.substring(index + count, index + count + 5);
// Logger.v("true");
} else {
// Logger.v("false");
}
return output;
}
public static void main(String[] args) {
String string = "E:\\temp";
// readFileByLine(string);
readDir(string);
// String temp = "fuck fucka --- xxxx - [lineId : 30222]";
// String output = getValidString(temp);
// Logger.v(output);
}
}
分享到:
相关推荐
此文件为Python 123 平台 Python语言程序设计 练习7:文件与数据格式化的文件字符分布附件
在本实践项目中,我们关注的是使用jQuery来统计一个字符串中包含特定字符“a”或“A”的个数。jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理以及Ajax交互等任务。在这个练习中,我们将不直接用到...
Log4cpp 是一个流行的开源日志库,尤其适用于 C++ 开发者,它提供了丰富的功能,使开发者能够方便地在程序中生成和管理日志文件。本文将详细介绍如何在 Windows 和 Linux 系统中使用 Log4cpp 库来实现日志功能。 **...
在IT行业中,我们经常...总的来说,检查文件中是否含有非英文字符是一个常见的文本处理任务,可以通过多种编程语言实现。理解字符编码和字符串操作对于开发人员来说至关重要,尤其是在处理国际化和编码兼容性问题时。
在LOG4CPP中,我们可以创建多个Appender对象,每个Appender负责将日志消息写入一个特定的文件。以下是一个简单的配置示例,展示如何设置多个文件以分离不同级别的日志: ```xml <log4cpp> ...
.log文件是一种文本文件,其中包含了程序运行时生成的详细信息,如系统活动、用户操作、错误消息等。这些信息对于开发者来说极其宝贵,因为它们可以帮助诊断和修复程序中的问题,提供运行时环境的洞察,以及追踪系统...
本工程基于Eclipse IDE,配置了一个简单的Log4j设置,实现了每天自动将日志输出到一个特定命名格式的文件中,即“XXX_年月日时分.log”。下面我们将详细解析这个配置及其工作原理。 1. **Log4j介绍**: Log4j是一...
日志是一个记录程序运行过程中的事件、错误、警告和其他相关信息的文件。这些信息对于理解和解决程序中的问题非常有帮助。在C++中,我们可以自定义日志系统,使其满足特定的需求,例如按照级别(如DEBUG、INFO、...
本教程将深入探讨如何在C++中创建一个能够打印log到文件的系统,同时具备删除旧日志和设定日志文件大小的功能。 首先,我们需要理解日志的基本概念。日志通常包含程序运行过程中的信息,如错误信息、警告消息、调试...
在C++编程中,日志记录是一个至关重要的环节,它帮助开发者追踪程序运行状态,调试错误,以及在生产环境中监控程序行为。`spdlog`是一个轻量级且高性能的日志库,广泛应用于C++项目中。本文将详细介绍如何在C++项目...
在这个项目中,我们将深入探讨如何利用C++在Visual Studio 2010环境下编写程序来实现日志文件的创建和写入。 首先,我们需要理解什么是日志文件。日志文件是程序运行过程中记录的事件或错误信息,通常包括时间戳、...
Apache、IIS 网站主机的 .log 纪录文件,能够将多种关于网站浏览者的统计资料彻底解析,包括:参观人次、动态状况、文件存取状态、参照网页、搜寻引擎、错误、来访者国家、网站搜寻字符串/词组等等。给你活动统计...
【Java课程设计:统计文件字符含GUI】是一个典型的编程项目,旨在帮助学生深入理解Java语言,特别是GUI(图形用户界面)编程以及文件处理。在这个项目中,学生将学习如何使用Java来读取文本文件,统计其中不同字符的...
1. **日志操作(log4net)**: log4net 是一个流行的日志记录框架,用于记录应用程序运行时的信息。它提供了灵活的日志级别(如 Debug、Info、Warn、Error 和 Fatal),并支持多种日志输出方式,如文件、控制台、数据库...
这里创建了一个名为"LogFileAppender"的文件追加器,它会将日志信息写入名为"log-file.txt"的文件,并且设置为追加模式,即每次写入时不会覆盖已有内容。`<filter>`元素用于过滤日志级别,只允许DEBUG到WARN级别的...
本主题聚焦于“从文本文件中查找字符串”,这是一个常见的需求,例如在源代码中寻找特定函数或变量,或者在日志文件中查找关键信息。这个过程可以帮助开发者定位问题,理解代码逻辑,或者对数据进行分析。 首先,...
log4 是一个流行的 Java 日志记录系统,提供了灵活的配置选项来满足不同的日志记录需求。在本文中,我们将详细介绍 log4 的配置选项,并提供了大量的示例代码。 Log4j.properties 文件是 log4 的配置文件,用于定义...
在IT行业中,批处理工具是一种高效自动化操作的实用程序,尤其在处理大量文件或执行重复性任务时。本文将深入探讨“替换文件中指定字符串”的批处理工具,它允许用户批量替换文件中的特定字符串,无需手动逐个编辑,...
在上面的代码中,我们首先创建了一个测试字符串,然后指定了文件的路径和文件名,最后使用FileUtils工具类将字符串写入到txt文件中。 使用FileUtils工具类可以非常方便地将字符串数据存储到txt文件中,从而满足我们...