⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file.java

📁 这个java类文件主要使用了java io访问及文件操作处理。电信设备产生的大量的日志文件的内容需要写入到数据库中
💻 JAVA
字号:
package crate;

/**
 * @(#)file.java
 * Copyright 2005 郑州创元计算机网络工程有限公司. All right reserved.
 */

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * 类简介:
 * 
 * @author 黄静峰
 * @version 1.0 Sep 11, 2006<br>
 *          部门:创元网络 软件部 <br>
 */
public class file {

	public static void main(String[] args) throws IOException {

		System.out.println("开始进行整合指定文件夹下的文件......");
		System.out.println("指定的源文件夹路径: " + args[0]);
		System.out.println("指定的目标文件(全路径,包括文件名): " + args[1]);

		final String separator = "------------------------------------------------------------------------";

		File dirs = new File(args[0]);
		File[] files = dirs.listFiles();
		System.out.println("读取文件列表...... ");
		System.out.println("文件总数:" + files.length);

		// 构造随机访问文件对象,指定访问目的地文件和访问属性 "rw" - 可读、写
		RandomAccessFile rf = new RandomAccessFile(args[1], "rw");

		int k = 0;

		// 开始循环指定文件夹下所有的文件,以文件名构造新的FileReader对象
		for (int i = 0; i < files.length; i++) {

			// 读取文件内容
			FileReader fr = new FileReader(args[0] + "\\" + files[i].getName());

			// 缓冲读取对象
			BufferedReader br = new BufferedReader(fr);

			// 读取第一行
			String Line = br.readLine();

			int m = 0;

			StringBuffer sb = new StringBuffer();

			// 如果有数据则继续循环文件内容(按行)
			while (Line != null) {

				k++;

				if (m == 0) {
					if (Line.equalsIgnoreCase(separator)) {
						k--;
						Line = br.readLine();
						m = 1;
						continue;
					}
				} else {
					if (Line.equalsIgnoreCase(separator)) {
						k--;
						// 定位到文件的最后一个字符
						rf.seek(rf.length());
						// 追加读取的新的一行数据到文件末端,并增加换行
						rf
								.writeBytes(sb.substring(0, sb.length() - 1)
										+ "\r\n");
						Line = br.readLine();
						sb.setLength(0);
						continue;
					}

					String[] a = Line.trim().split("\\=");
					if (a.length == 1) {
						sb.append(" ,");
					} else {
						sb.append(a[1].trim() + ",");
					}

					Line = br.readLine();

					if (Line == null) {
						// 定位到文件的最后一个字符
						rf.seek(rf.length());
						// 追加读取的新的一行数据到文件末端,并增加换行
						rf
								.writeBytes(sb.substring(0, sb.length() - 1)
										+ "\r\n");
						sb.setLength(0);
					}
				}

				// 处理超过5000条数据,则通知垃圾回收无用对象(根据实际进行设置)
				if (k % 10000 == 0) {
					System.out.println("已处理:" + k + " 行数据");
					System.gc();
				}

			}

			// 继续按行读取
			// 关闭资源
			sb = null;
			br.close();
			fr.close();
			System.out.println("处理文件:" + files[i].getName() + " 完毕!");
		}
		System.out.println("共处理 :" + k + " 行数据");
		rf.close();
		System.out.println("数据处理完成...... GOOD LUCK!");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -