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

来源:互联网 发布:淘宝 sc 查询 编辑:程序博客网 时间:2024/05/21 11:21

接触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 fileStringBuffer 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 fileFileWriter 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  752   徐贤坤   58  58  873   钱云宋   41  86  904   陈平     83  43  655   金荣权   93  88  636   陈如棉   99  93  437   章可可   98  62  728   陈伟奔   87  43  769   张如祥   69  58  7810  丁尚游   80  56  5711  林宏旦   91  90  7612  曾上腾   100 96  5413  谢作品   82  100 5514  温从卫   73  46  10115  李明察   81  41  7516  彭鸿威   46  46  8917  翁文秀   57  43  5818  陈家伟   63  58  9819  温正考   100 64  5720  周文湘   50  50  7921  吴杰     65  65  8322  赖登城   60  79  5323  聂树露   51  76  4524  张雅琴   68  95  5625  曾瑞约   88  63  5826  王志强   96  79  7827  徐贤所   66  46  7428  陈祥枭   82  96  9129  温婷婷   41  73  9630  应孔余   66  81  7131  宋成取   71  68  6232  黄益省   65  56  4333  陈思文   55  100 4434  上官福新 64  62  7035  钟国横   49  69  5636  林型涨   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"的内容如下:IdNameLanMathEnglishAverageTotalSort1李守东837375231.077.092徐贤坤585887203.067.0213钱云宋418690217.072.0154陈平834365191.063.0295金荣权938863244.081.056陈如棉999343235.078.077章可可986272232.077.088陈伟奔874376206.068.0199张如祥695878205.068.02010丁尚游805657193.064.02711林宏旦919076257.085.0212曾上腾1009654250.083.0413谢作品8210055237.079.0614温从卫7346101220.073.01115李明察814175197.065.02516彭鸿威464689181.060.03117翁文秀574358158.052.03618陈家伟635898219.073.01219温正考1006457221.073.01020周文湘505079179.059.03221吴杰656583213.071.01622赖登城607953192.064.02823聂树露517645172.057.03424张雅琴689556219.073.01325曾瑞约886358209.069.01826王志强967978253.084.0327徐贤所664674186.062.03028陈祥枭829691269.089.0129温婷婷417396210.070.01730应孔余668171218.072.01431宋成取716862201.067.02232黄益省655643164.054.03533陈思文5510044199.066.02434上官福新646270196.065.02635钟国横496956174.058.03336林型涨787350201.067.023 */*/


原创粉丝点击