java读取文件数据进行一些简单处理的例子

接触java语言要使用到读取文件一些知识,搜索到一些例子,自己好好体会一下,自己整理了出来就贴在这里吧.希望大家勿喷.


例子:

/*Java文件操作:按行读取和写入
 
    文件操作是任何语言中最为常用的部分,Java也不例外。这里主要介绍按行读取的文件操作和写入
 */

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

public class JavaFile
{
	public static void main(String[] args)
	{
		try
		{
			// read file content from file
			StringBuffer sb = new StringBuffer("");

			FileReader reader = new FileReader("c://testRead.txt");
			BufferedReader br = new BufferedReader(reader);

			String str = null;

			while ((str = br.readLine()) != null)
			{
				sb.append(str + "\n");

				System.out.println(str);
			}

			br.close();
			reader.close();

			// write string to file
			FileWriter writer = new FileWriter("c://testWrite.txt");
			BufferedWriter bw = new BufferedWriter(writer);
			bw.write(sb.toString());

			bw.close();
			writer.close();
		} catch (FileNotFoundException e)
		{
			e.printStackTrace();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}

}


例子:


/*
 * 这是百度知道里面的一个问题:我觉得不错,自己也运行修改了一下,就发布一下以后备用.
 * 题目:java 按行读取txt文件的数字
 * 文件file4.txt中(数据是按行排列的,每行一个数值)
 * 1234
 * 90.7
 * 78.8
 * 4567
 * 87.3
 * 65.6
 *现在要建立一个数组double类型,把file4中所有的数字都写入到这个数组中,请问该怎么编写,谢谢。
 */

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class test
{
	public static double[] writeToDat(String path)
	{
		File file = new File(path);
		List<String> list = new ArrayList<String>();
		double[] nums = null;
		try
		{
			BufferedReader bw = new BufferedReader(new FileReader(file));
			String line = null;
			// 因为不知道有几行数据,所以先存入list集合中
			while ((line = bw.readLine()) != null)
			{
				list.add(line);
			}
			bw.close();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		// 确定数组长度
		nums = new double[list.size()];
		for (int i = 0; i < list.size(); i++)
		{
			String s = list.get(i);
			nums[i] = Double.parseDouble(s);
		}
		return nums;
	}

	public static void main(String[] args)
	{

		String path = "d:/file4.txt";
		double[] nums = writeToDat(path);
		for (int i = 0; i < nums.length; i++)
		{
			System.out.println(nums[i]);
		}
	}
}

第二个例子个人比较喜欢,这个例子复杂多了.各位请看:

/*
 *  JAVA中如何读取TXT文件数据并计算。。。。帮帮我吧
 要用JAVA写个东西读取TXT中的数据 且要计算出平均值和总值 最后还要按总值排序。       有高手帮帮我吗?  先谢谢了
 TXT的文件如下
学号 姓名   语文 数学 英语 平均值 总值  排序
1   李守东   83  73  75
2   徐贤坤   58  58  87
3   钱云宋   41  86  90
4   陈平     83  43  65
5   金荣权   93  88  63
6   陈如棉   99  93  43
7   章可可   98  62  72
8   陈伟奔   87  43  76
9   张如祥   69  58  78
10  丁尚游   80  56  57
11  林宏旦   91  90  76
12  曾上腾   100 96  54
13  谢作品   82  100 55
14  温从卫   73  46  101
15  李明察   81  41  75
16  彭鸿威   46  46  89
17  翁文秀   57  43  58
18  陈家伟   63  58  98
19  温正考   100 64  57
20  周文湘   50  50  79
21  吴杰     65  65  83
22  赖登城   60  79  53
23  聂树露   51  76  45
24  张雅琴   68  95  56
25  曾瑞约   88  63  58
26  王志强   96  79  78
27  徐贤所   66  46  74
28  陈祥枭   82  96  91
29  温婷婷   41  73  96
30  应孔余   66  81  71
31  宋成取   71  68  62
32  黄益省   65  56  43
33  陈思文   55  100 44
34  上官福新 64  62  70
35  钟国横   49  69  56
36  林型涨   78  73  50
各位大哥 能详细点嘛?我才学JAVA 属菜的不能再菜的。。。能给个写好的吗?
 */
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class test
{
	public static void main(String[] args)
	{
		// 传入参数为文件目录
		GetDataProcess("d:/a.txt");
	}

	public static void GetDataProcess(String filePath)
	{
		BufferedReader br = null;
		try
		{
			br = new BufferedReader(new FileReader(filePath));
		} catch (FileNotFoundException e)
		{
			e.printStackTrace();
			return;
		}

		String[] columnName =
		{ "Id", "Name", "Languages", "Math", "English" }; // 列名
		int[] courseIndexs =
		{ 2, 3, 4 }; // 课程对应的列
		int i, j, index;
		String line;
		List<Map<String, Object>> students = new ArrayList<Map<String, Object>>();
		// 记录Id和总值,用于排序
		List<Map<String, Object>> sortList = new ArrayList<Map<String, Object>>();
		try
		{
			br.readLine(); // 去掉第一行
			while ((line = br.readLine()) != null)
			{
				index = 0;
				String[] se = line.split(" ");
				Map<String, Object> student = new HashMap<String, Object>();
				for (i = 0; i < se.length; i++)
				{
					if ("".equals(se[i]))
					{
						continue;
					}
					if (index >= columnName.length)
					{
						continue;
					}
					student.put(columnName[index], se[i]);
					index++;
				}
				// 计算平均值,总值
				double total = 0;
				for (j = 0; j < courseIndexs.length; j++)
				{
					total += Double.parseDouble((String) student
							.get(columnName[courseIndexs[j]]));
				}
				double average = total / courseIndexs.length;
				// 只取一位小数
				average = Math.round(average * 10) / 10;
				student.put("Total", total);
				student.put("Average", average);

				Map<String, Object> sort = new HashMap<String, Object>();
				sort.put("Id", student.get("Id"));
				sort.put("Total", student.get("Total"));
				sortList.add(sort);

				students.add(student);
			}
			br.close();

			// 排序
			for (i = 0; i < sortList.size(); i++)
			{
				for (j = i + 1; j < sortList.size(); j++)
				{
					if ((Double) sortList.get(i).get("Total") < (Double) sortList
							.get(j).get("Total"))
					{
						Map<String, Object> temp = sortList.get(i);
						sortList.set(i, sortList.get(j));
						sortList.set(j, temp);
					}
				}
			}
			Map<Object, Integer> sortedId = new HashMap<Object, Integer>();
			for (i = 0; i < sortList.size(); i++)
			{
				sortedId.put(sortList.get(i).get("Id"), i + 1);
			}

			// 设定序号
			for (j = 0; j < students.size(); j++)
			{
				students.get(j).put("Order",
						sortedId.get(students.get(j).get("Id")));
			}

			// 输出(写到原文件)
			// PrintWriter pw = new PrintWriter(new File(filePath));
			// 输出(写到其他文件)
			PrintWriter pw = new PrintWriter(new File("D:/b.txt"));

			pw.println("Id\tName\tLan\tMath\tEnglish\tAverage\tTotal\tSort");
			int cIndex;
			for (i = 0; i < students.size(); i++)
			{
				Map<String, Object> st = students.get(i);
				cIndex = 0;
				pw.println(st.get(columnName[cIndex++]) + "\t"
						+ st.get(columnName[cIndex++]) + "\t"
						+ st.get(columnName[cIndex++]) + "\t"
						+ st.get(columnName[cIndex++]) + "\t"
						+ st.get(columnName[cIndex++]) + "\t" + st.get("Total")
						+ "\t" + st.get("Average") + "\t" + st.get("Order"));
			}
			pw.flush();
			pw.close();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}
}

/*
最后生成文件"b.txt"的内容如下:
Id	Name	Lan	Math	English	Average	Total	Sort
1	李守东	83	73	75	231.0	77.0	9
2	徐贤坤	58	58	87	203.0	67.0	21
3	钱云宋	41	86	90	217.0	72.0	15
4	陈平	83	43	65	191.0	63.0	29
5	金荣权	93	88	63	244.0	81.0	5
6	陈如棉	99	93	43	235.0	78.0	7
7	章可可	98	62	72	232.0	77.0	8
8	陈伟奔	87	43	76	206.0	68.0	19
9	张如祥	69	58	78	205.0	68.0	20
10	丁尚游	80	56	57	193.0	64.0	27
11	林宏旦	91	90	76	257.0	85.0	2
12	曾上腾	100	96	54	250.0	83.0	4
13	谢作品	82	100	55	237.0	79.0	6
14	温从卫	73	46	101	220.0	73.0	11
15	李明察	81	41	75	197.0	65.0	25
16	彭鸿威	46	46	89	181.0	60.0	31
17	翁文秀	57	43	58	158.0	52.0	36
18	陈家伟	63	58	98	219.0	73.0	12
19	温正考	100	64	57	221.0	73.0	10
20	周文湘	50	50	79	179.0	59.0	32
21	吴杰	65	65	83	213.0	71.0	16
22	赖登城	60	79	53	192.0	64.0	28
23	聂树露	51	76	45	172.0	57.0	34
24	张雅琴	68	95	56	219.0	73.0	13
25	曾瑞约	88	63	58	209.0	69.0	18
26	王志强	96	79	78	253.0	84.0	3
27	徐贤所	66	46	74	186.0	62.0	30
28	陈祥枭	82	96	91	269.0	89.0	1
29	温婷婷	41	73	96	210.0	70.0	17
30	应孔余	66	81	71	218.0	72.0	14
31	宋成取	71	68	62	201.0	67.0	22
32	黄益省	65	56	43	164.0	54.0	35
33	陈思文	55	100	44	199.0	66.0	24
34	上官福新	64	62	70	196.0	65.0	26
35	钟国横	49	69	56	174.0	58.0	33
36	林型涨	78	73	50	201.0	67.0	23
 */
*/


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零点零一

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值