文件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号需要排序
分享到:
相关推荐
java IO 基础教程 讲述IO的基本原理
【资源说明】 1、该资源内项目代码都是经过测试运行...基于S5P6818(A53八核)实习的智能识别系统源码+项目说明(涉及Linux文件IO基础、RFID射频识别技术、V4L2、多用户信息管理、多线程、多进程等多方面的知识).zip
本教程将深入讲解Java IO流的基础知识,包括其概念、分类、常用类以及如何在实际编程中应用。 一、IO流的概念 IO流是Java提供的一组接口和类,用于在不同数据源之间传输数据。数据源可以是文件、内存、网络连接等。...
以上就是Java IO基础的一些关键知识点,通过深入理解和熟练掌握这些内容,可以有效地处理程序与外部世界的交互,实现数据的高效读写和传输。提供的资料“java_javase201_day01.pdf”、“java_javase201_day02.pdf”...
除了基础流,Java NIO(New IO)提供了一种更高效、非阻塞的IO模型。`java.nio`包下的`FileChannel`和`Files`类提供了更高级的文件操作,如映射内存到文件(MMap),以及异步文件操作。 例如,使用`Files`类移动...
Java IO基础是Java编程中非常重要的一个领域,它涉及到如何在程序中进行数据的输入和输出操作。在Java中,IO系统比其他一些语言更为复杂,但也因此提供了更高的灵活性和控制性,允许开发者根据需求定制适合的输入...
C++的无头文件IO(2行代码)
在提供的压缩包文件"Io基础文档"中,可能包含了关于这些概念的详细说明、示例代码和实战指导,对于深入理解和掌握Java IO操作非常有帮助。学习和理解这些内容,将有助于开发者在处理数据输入输出时编写出高效、稳定...
一、Java IO 基础 Java IO 包含了许多类,如InputStream、OutputStream、Reader、Writer等,它们分别用于处理字节流和字符流。字节流适用于二进制数据,而字符流适用于文本数据。Java IO 还包括Filter流,可以用来...
IO基础(字符流) 文章目录IO基础(字符流)一、字符流二、常用的字符流类的继承关系三、字符流 FileReader 和 FileWriter四、字符缓冲流 BufferedReader 和 BufferedWriter五、 字符字节转换流(InputStreamReader/...
在“IO原理.txt”这个文件名中,我们可以推测这是一个关于IO基础知识的文档,可能涵盖了上述的一些内容,包括流的概念、不同类型的流、缓冲技术、异常处理以及高级特性如NIO。 总的来说,IO知识是任何软件开发者都...
一、Java IO基础 Java IO体系主要由流(Stream)组成,分为字节流和字符流两大类,分别处理字节数据和字符数据。字节流包括InputStream和OutputStream家族,字符流则包括Reader和Writer家族。这些基类都有许多子类...
### IO基础概念 在计算机科学领域中,**IO**(Input/Output)指的是输入和输出操作。它是程序与外部世界交互的一种方式。IO操作涉及到数据读取、写入以及处理等过程。对于编程而言,掌握IO是非常重要的,因为几乎所有...
使用针对 teztools.io 基础设施构建的脚本和工具构建区块链驱动的应用程序 API 端点 基础 URI: : 目前不需要 api 密钥。 TOKENADDRESS_TOKENID 还是 TOKENADDRESS? TOKENADDRESS = FA1.2 令牌和令牌 ID 为 0 ...
文章的研究成果表明,构建在Factory IO基础上的PLC虚拟仿真实验平台,能够为学生提供丰富的虚拟控制对象,实现控制程序的调试和仿真运行,并且可以全面地锻炼学生的PLC综合应用能力。这种方式有效地解决了传统教学中...
01_IO初步_java基础_www.gougu.net_文件流