欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

有一个文件 test.txt ,读取文件每一行计算每一行的和,最终将结果保存到result.txt文件中

程序员文章站 2022-06-16 12:40:18
...
  1. 有一个文件 test.txt ,里面的内容是:(有换行)

     
    01|02|03|04|05|06|07|08|09|10
    11|12|13|14|15|16|17|18|19|20
    21|22|23|24|25|26|27|28|29|30
    31|32|33|34|35|36|37|38|39|40
    41|42|43|44|45|46|47|48|49|50
    51|52|53|54|55|56|57|58|59|60
  2. 要求:

    1. 请先将testData.txt文件中的内容读取出来

    2. 将读取的内容通过处理后,将结果保存到result.txt文件中,保存的结果如下:

       
      第1行总和 + ... + 第n-1行总和 + 第n行总和 = 所有行总和

示例代码:
package com.hcq.main;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Main {

	public static void main(String[] args) {
		// 读取操作
		File file = new File("testData.txt");
		String str = readTextFromFile(file);
		System.out.println("处理之后的内容为: " + str);
		// 写入操作
		File saveResult = new File("result.txt");
		boolean result = writeText2File(str, saveResult, false);
		System.out.println(result ? "操作完成!" : "操作失败!");
	}

	// 读取文件方法并处理读取的内容
	public static String readTextFromFile(File file) {
		if (file == null || !file.exists())
			return null;
		try (BufferedReader br = new BufferedReader(new FileReader(file));) {
			StringBuilder sb = new StringBuilder();
			String s = null;
			long sum = 0;// 每次读取的计算结果
			long finallyNum = 0;// 计算最终结果
			while ((s = br.readLine()) != null) {
				sum = 0;// 清零
				String[] split = s.split("[|]");
				for (String str : split) {
					int num = Integer.parseInt(str);
					sum += num;
				}
				sb.append(sum).append('+');
				finallyNum += sum;
			}
			sb.delete(sb.length() - 1, sb.length());
			sb.append("=").append(finallyNum);
			return sb.toString();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

	// 写入操作
	public static boolean writeText2File(String text, File file, boolean append) {
		if (text == null || "".equals(text) || file == null) {
			return false;
		}
		try (BufferedWriter bw = new BufferedWriter(new FileWriter(file, append))) {
			bw.write(text);
			return true;
		} catch (IOException e) {
			e.printStackTrace();
		}
		return false;
	}
}

结果:
有一个文件 test.txt ,读取文件每一行计算每一行的和,最终将结果保存到result.txt文件中