文件Source中的数据格式为:
A:52
B:23
C:44
D:88
H:99
C:22
C:33
E:11
问题:
1、从Source中读取数据,并求和,打印到控制台,格式为:
A:52
B:23
C:99
D:88
H:99
E:11
2、排序打印到控制台
E:11
B:23
A:52
D:88
C:99
H:99
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Manager {
private BufferedReader br;
private BufferedWriter bw;
private List<Student> students = new ArrayList<Student>();
public void read(){
try {
br = new BufferedReader(new FileReader("Source"));
String str = "";
String [] arr;
Map<String, Integer> aMap = new HashMap<String, Integer>();
while ((str = br.readLine()) != null) {
arr = str.split(":");
if (aMap.containsKey(arr[Student.INDEX_0])) {// sum
aMap.put(arr[Student.INDEX_0], aMap.get(arr[Student.INDEX_0]) + Integer.valueOf(arr[Student.INDEX_1]) );
} else {
aMap.put(arr[Student.INDEX_0], Integer.valueOf(arr[Student.INDEX_1]));
}
}
for (String key : aMap.keySet()) {
students.add(new Student(key, aMap.get(key)));
System.out.println(new Student(key, aMap.get(key)).toString());
}
System.out.println("=====排序后======");
this.sort();
for (Student st : students) {
System.out.println(st.toString());
}
br.close();// 关闭读取流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 排序
private void sort() {
Collections.sort(students);
}
public void write(){
try {
bw = new BufferedWriter(new FileWriter("SumSource"));
for (Student st : students) {
bw.write(st.toString(), 0, st.toString().length());
bw.newLine();
}
bw.close();//关闭写入流
} catch (IOException e) {
e.printStackTrace();
}
}
private static class Student implements Comparable<Student>{
private String name;
private Integer score;
public static int INDEX_0 = 0;
public static int INDEX_1 = 1;
Student(String name, Integer sore){
this.name = name;
this.score = sore;
}
public Integer getScore(){
return this.score;
}
// 重写
public String toString(){
return this.name + ":" + this.score ;
}
public int compareTo(Student st){
return this.getScore() - st.getScore();
}
}
public static void main(String [] args) {
Manager m = new Manager();
m.read();
m.write();
}
}
上面是我写的代码
但是还有个问题,如果是特别大的文件该怎么办呢?
比如:两个30G的文件,文件里面一行一个QQ号,现在需要把两个文件合并成一个文件,并且QQ号需要排序
分享到:
相关推荐
linux IO 基础简介及代码,包含三天的课程、IO缓冲机制,以及试卷。
java IO 基础教程 讲述IO的基本原理
【资源说明】 1、该资源内项目代码都是经过测试运行...基于S5P6818(A53八核)实习的智能识别系统源码+项目说明(涉及Linux文件IO基础、RFID射频识别技术、V4L2、多用户信息管理、多线程、多进程等多方面的知识).zip
java中的IO流的基础教学,我在里面写了关于IO流最基础的几个类
全面覆盖java-IO基础的文章实例,自己整理的实例,很全面,很经典
java IO基础操作 包含所有常用IO流
C++的无头文件IO(2行代码)
Java 中的一些基本文件操作,包括:文件操作(移动、读写)和文本文件读写
主要介绍了Java进阶教程之IO基础,这里只是对Java IO的基本介绍,包含读取和写入等操作,需要的朋友可以参考下
IO基础(字符流) 文章目录IO基础(字符流)一、字符流二、常用的字符流类的继承关系三、字符流 FileReader 和 FileWriter四、字符缓冲流 BufferedReader 和 BufferedWriter五、 字符字节转换流(InputStreamReader/...
IO基础(File类) 文章目录IO基础(File类)一、什么是文件?二、File文件操作类代码如下:打印文件夹的内容实现文件夹的复制(需要借助字节输入输出流) 一、什么是文件? 文件简单的可以理解成,在外设硬盘上面...
Java IO基础之读写文本文件
使用针对 teztools.io 基础设施构建的脚本和工具构建区块链驱动的应用程序 API 端点 基础 URI: : 目前不需要 api 密钥。 TOKENADDRESS_TOKENID 还是 TOKENADDRESS? TOKENADDRESS = FA1.2 令牌和令牌 ID 为 0 ...
java基础之IO流,基础简介知识,帮助你了解java的io技术
01_IO初步_java基础_www.gougu.net_文件流
java基础,IO基础,自己总结的笔记。
此文档属于本人当初学习java基础之IO流,所整理的文档。里面有字节流与字符流的比较,也有总结使用不同方式读取文档的demo。希望对你的学习有帮助,谢谢!
此文档是对JAVA 中的 IO 流的整理,其中有大多实用 而平时可以接触到的 IO 基础,对开发工作者有很大的帮助
自己工作用,
wince5.0IO操作基础