`

读取两个文件中的行数,写入第三个文件

    博客分类:
  • java
 
阅读更多
有一个联行号的文件,和一个银行文件,需要读取联行号文件中的某行,用银行文件中的行替换,联行号文件的第四列编号为银行文件的编号,需要把银行名称和银行网点显示在第三个文件中。

联行号文件的内容如下:


105588073429,,,105,105581000018,,,,5880,,,,中国建设银行股份有限公司顺德大良支行,,,,,,,,,,,,,,
105588073437,,,105,105581000018,,,,5880,,,,中国建设银行股份有限公司顺德锦湖支行,,,,,,,,,,,,,,
//以下省略


银行文件的内容如下:

104|中国银行
105|中国建设银行
313|城市商业银行
314|农村商业银行
//以下省略


结果文件

中国建设银行,中国建设银行股份有限公司顺德大良支行
中国建设银行,中国建设银行股份有限公司顺德锦湖支行
//以下省略


package com.xjh.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 联行号的拆分 (2013-01-11)
 * @author xiejiaohui
 *
 */
public class LianHanghao {
	
	public static void main(String[] args) throws Exception {
		printNowDate();
		File lianHangHao_file = new File("d:\\LianHangHao3.txt");
		File bankCode_file = new File("d:\\BankCode.txt");
		File result_file = new File("d:\\result.txt");
		
//		BufferedReader lianHanghao = new BufferedReader(new FileReader("d:\\LianHangHao2.txt"));
//		BufferedReader lianHanghao = new BufferedReader(new InputStreamReader(new FileInputStream(lianHangHao_file),"GB2312")); 
		BufferedReader lianHanghao = new BufferedReader(new InputStreamReader(new FileInputStream(lianHangHao_file),"GBK"));

//		FileWriter result_bw = new FileWriter(new File("d:\\result.txt"));
//		BufferedWriter result_bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(result_file), "utf-8"));
//		BufferedWriter result_bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(result_file), "GB2312"));
		BufferedWriter result_bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(result_file), "GBK"));
		
		String lianHanghao_line;
		String bankCode_line;
		try {
			while ((lianHanghao_line = lianHanghao.readLine()) != null) {
				if (!lianHanghao_line.contains(",")) {
					if (lianHanghao_line.length() > 0) {
						println("这行格式有问题: " + lianHanghao_line);
					}
					continue;
				}
				String[] l_h_h = lianHanghao_line.split(",");
//				BufferedReader bankCode = new BufferedReader(new InputStreamReader(new FileInputStream(bankCode_file),"utf-8"));
//				BufferedReader bankCode = new BufferedReader(new InputStreamReader(new FileInputStream(bankCode_file),"GB2312")); 
				BufferedReader bankCode = new BufferedReader(new InputStreamReader(new FileInputStream(bankCode_file),"GBK"));
				while ((bankCode_line = bankCode.readLine()) != null) {
					String[] b_l = bankCode_line.split("\\|");
					if (l_h_h[3].equals(b_l[0])) {
						result_bw.append(b_l[1]);
						break;
					} else {
						continue;
					}
				}
				result_bw.append(",");
				result_bw.append(l_h_h[12]);
				result_bw.append("\n");
				bankCode.close();
			}
		} finally {
			lianHanghao.close();
			result_bw.close();
		}
		printNowDate();
		}
	
	public static void println(String input) {
		System.out.println(input);
	}
	
	public static void printNowDate() {
		println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
	}

}



这个程序需要读取两个文件,写入一个文件,我得出如下情况

如果读入的两个文件,保存的格式都是  ANSI/ASCII 则读取文件的InputStreamReader必须为GBK否则有乱码

如果读取的两个文件,保存的格式都是 UTF-8 则读取文件的InputStreamReader必须为utf-8否则有乱码

两个读入的文件,一个是 UTF-8 保存的,另外一个是 ANSI/ASCII 保存,只要读取文件的 InputStreamReader 格式跟文件保存格式保持一致,不会出现乱码。

分享到:
评论

相关推荐

    如何编写批处理文件批处理文件批处理文件

    (注意是两个等号) 如if "%1"=="a" format a: if {%1}=={} goto noparms if {%2}=={} goto noparms 2、if exist 文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如if exist ...

    入门学习Linux常用必会60个命令实例详解doc/txt

    在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例108 计算两个矩形矩阵的乘积 129 第5章 面向对象编程技术 131 5.1 属性和方法 132 实例109 使用属性存储用户编号和姓名 132 实例110 通过定义方法求一个数的平方 133 实例111 使用重载方法实现不同类型数据的...

    linux.chm文档

    umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 mount /dev/fd0 /mnt/floppy 挂载一个软盘 mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom mount /dev/hdc ...

    Python Cookbook

    第3章 时间和财务计算 105 引言 105 3.1 计算昨天和明天的日期 111 3.2 寻找上一个星期五 112 3.3 计算日期之间的时段 114 3.4 计算歌曲的总播放时间 115 3.5 计算日期之间的工作日 116 3.6 自动查询节日 118...

    《程序设计课程设计》实验报告.doc

    输入数据格式: 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m个整数,用空格分隔, 分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每...

    1《程序设计课程设计》实验报告.doc

    输入数据格式: 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m个整数,用空格分隔, 分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每...

    ExerciciosNivel2-Delphi:文件操作

    屏幕上应该有两个备注类型的字段。 选择文件后,程序应读取并分割文件。 这些行的目标应写在右侧的备注中,另一半应写在左侧的备注中。 注意:如果行数为奇数,则左备忘录将有更多行。 第二个奇数行选择: 使一个...

    delphi 开发经验技巧宝典源码

    0142 使用FileWrite函数将缓冲区中的内容写入文件 91 4.10 其他函数 91 0143 使用Random函数产生7个随机数 91 0144 使用DiskFree函数返回磁盘驱动器的剩余空间 91 0145 如何使用Printer函数 92 0146 使用...

    Linux_unix_shell第一部分编程(共两部分)

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    delphi 开发经验技巧宝典源码06

    0142 使用FileWrite函数将缓冲区中的内容写入文件 91 4.10 其他函数 91 0143 使用Random函数产生7个随机数 91 0144 使用DiskFree函数返回磁盘驱动器的剩余空间 91 0145 如何使用Printer函数 92 0146 使用...

    linux shell 编程教程

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    shell 编程指南pdf

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    LINUX与UNIX SHELL编程指南(很全)

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    LINUX与UNIX SHELL编程指南 高清PDF

    11.1.18 将两个分类文件合并 110 11.2 系统sort 110 11.3 uniq用法 111 11.4 join用法 112 11.5 cut用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste用法 116 11.6.1 指定列 116 11.6.2 使用不同...

    LINUX 与 UNIX SHELL编程指南

    11.1.18 将两个分类文件合并 110 11.2 系统 sort 110 11.3 uniq 用法 111 11.4 join 用法 112 11.5 cut 用法 114 11.5.1 使用域分隔符 115 11.5.2 剪切指定域 115 11.6 paste 用法 116 11.6.1 指定列 116 ...

Global site tag (gtag.js) - Google Analytics