java读取文件和写入文件


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;

/**
* 读入两个文件,写入一个文件测试字符编码问题 (0 表示: GBK 1 表示: utf-8)
* readA readB writer result
* 0 0 0 ok
* 0 0 1 ok
* 0 1 0 乱码(前ok后乱码) 因为前面的读和写一致
* 0 1 1 ok
* 1 0 0 乱码(前乱码后ok) 因为后面的读和写一致
* 1 0 1 ok
* 1 1 0 乱码(前后都是乱码)
* 1 1 1 ok
*
* @author xiejiaohui (2013-1-11)
*
*/
public class LuanMaTest {

public static void main(String[] args) throws Exception {
printNowDate();

// 中国银行|农业银行
// 建设银行|交通银行
File R_A_0 = new File("d:\\Reader_A_GBK.txt"); // 保存格式为:ascii
File R_A_1 = new File("d:\\Reader_A_utf-8.txt"); // 保存格式为:utf-8

// 工商银行|招商银行
// 商业银行|村镇银行
File R_B_0 = new File("d:\\Reader_B_GBK.txt"); // 保存格式为:ascii
File R_B_1 = new File("d:\\Reader_B_utf-8.txt"); // 保存格式为:utf-8

File W_0_0_0 = new File("d:\\W_0_0_0.txt");
File W_0_0_1 = new File("d:\\W_0_0_1.txt");
File W_0_1_0 = new File("d:\\W_0_1_0.txt");
File W_0_1_1 = new File("d:\\W_0_1_1.txt");
File W_1_0_0 = new File("d:\\W_1_0_0.txt");
File W_1_0_1 = new File("d:\\W_1_0_1.txt");
File W_1_1_0 = new File("d:\\W_1_1_0.txt");
File W_1_1_1 = new File("d:\\W_1_1_1.txt");

BufferedReader R_A_0_bf = null;
BufferedReader R_A_1_bf = null;
BufferedReader R_B_0_bf = null;
BufferedReader R_B_1_bf = null;

BufferedWriter W_0_0_0_bf = null;
BufferedWriter W_0_0_1_bf = null;
BufferedWriter W_0_1_0_bf = null;
BufferedWriter W_0_1_1_bf = null;
BufferedWriter W_1_0_0_bf = null;
BufferedWriter W_1_0_1_bf = null;
BufferedWriter W_1_1_0_bf = null;
BufferedWriter W_1_1_1_bf = null;
// 0 0 0
action(R_A_0, "GBK", R_A_0_bf, R_B_0, "GBK", R_B_0_bf, W_0_0_0, "GBK", W_0_0_0_bf);
// 0 0 1
action(R_A_0, "GBK", R_A_0_bf, R_B_0, "GBK", R_B_0_bf, W_0_0_1, "utf-8", W_0_0_1_bf);
// 0 1 0
action(R_A_0, "GBK", R_A_0_bf, R_B_1, "utf-8", R_B_1_bf, W_0_1_0, "GBK", W_0_1_0_bf);
// 0 1 1
action(R_A_0, "GBK", R_A_0_bf, R_B_1, "utf-8", R_B_1_bf, W_0_1_1, "utf-8", W_0_1_1_bf);
// 1 0 0
action(R_A_1, "utf-8", R_A_1_bf, R_B_0, "GBK", R_B_0_bf, W_1_0_0, "GBK", W_1_0_0_bf);
// 1 0 1
action(R_A_1, "utf-8", R_A_1_bf, R_B_0, "GBK", R_B_0_bf, W_1_0_1, "utf-8", W_1_0_1_bf);
// 1 1 0
action(R_A_1, "utf-8", R_A_1_bf, R_B_1, "utf-8", R_B_1_bf, W_1_1_0, "GBK", W_1_1_0_bf);
// 1 1 1
action(R_A_1, "utf-8", R_A_1_bf, R_B_1, "utf-8", R_B_1_bf, W_1_1_1, "utf-8", W_1_1_1_bf);
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()));
}

public static void action(
File readFileA, String readFileAFmt, BufferedReader bufferedReaderA,
File readFileB, String readFileBFmt, BufferedReader bufferedReaderB,
File WriteFile, String writeFileFmt, BufferedWriter bufferedWriter)
throws Exception {
String s1;
String s2;
bufferedReaderA = new BufferedReader(new InputStreamReader(new FileInputStream(readFileA), readFileAFmt));
bufferedReaderB = new BufferedReader(new InputStreamReader(new FileInputStream(readFileB), readFileBFmt));
bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(WriteFile), writeFileFmt));
while ((s1 = bufferedReaderA.readLine()) != null) {
while ((s2 = bufferedReaderB.readLine()) != null) {
String[] s_l = s1.split("\\|");
String[] s_2 = s2.split("\\|");
bufferedWriter.append(s_l[1] + "____" + s_2[1] + "\n");
println(s_l[0] + "____" + s_l[1] + "____" + s_2[0] + "____" + s_2[1]);
}
}
bufferedReaderA.close();
bufferedReaderB.close();
bufferedWriter.close();
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于Java文件的读取和写入,可以通过使用Java的输入输出流来实现。我可以为你提供一些示例代码来帮助你理解。 首先,我们来看一下如何读取文件。可以使用Java的FileInputStream和BufferedReader类来实现。下面是一个读取文件并打印内容的示例: ```java import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class FileReaderExample { public static void main(String[] args) { try { FileInputStream fileInputStream = new FileInputStream("path/to/your/file.txt"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close(); fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们首先创建一个FileInputStream对象来读取文件。然后,我们使用BufferedReader来逐行读取文件的内容,并将每行内容打印出来。最后,记得关闭输入流。 接下来,我们来看一下如何写入文件。可以使用Java的FileOutputStream和BufferedWriter类来实现。下面是一个将文本写入文件的示例: ```java import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; public class FileWriterExample { public static void main(String[] args) { try { FileOutputStream fileOutputStream = new FileOutputStream("path/to/your/file.txt"); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileOutputStream.getFD())); String content = "Hello, world!"; bufferedWriter.write(content); bufferedWriter.close(); fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们首先创建一个FileOutputStream对象来写入文件。然后,我们使用BufferedWriter来将文本内容写入文件。最后,记得关闭输出流。 希望这些示例能帮助到你!如果你有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值