最近写了个程序,两个文本文件按行的比较,文本文件只有一列。一个文件20万行,另外一个8万行。
最初我是在两个for循环嵌套中,每次读取来进行比对的,后来有人说频繁的IO操作在性能上是很大的问题,于是我将那个小的文件读取集合,大的文件还是采用io读取操作。
问题就发生在这个过程中,当我将其中的一行和IO读取进行比对时,问题出来了readLine方法一直读到文件的末尾但是没有回退,当再次循环过来时,它是接着往下读,而没有指针复位。最后处理结果如下:
。。。。。。。。
Iterator<String> it = set.iterator();
while(it.hasNext())
{
comxfile = it.next();
System.out.println(comxfile);
brx.mark((int)filex.length()+1);
while(true)
{
rotxfile = brx.readLine();
if(rotxfile==null)
break;
System.out.println("rotxfile:"+rotxfile.substring(0,11));
}
brx.reset();
}
。。。。。。。
问题解决了之后,和同学沟通交流了一下,他说可以讲所有的都放入集合,然后再比对。我之所以没有全部放入集合,是对内存吃不准,不知道放进去内存会不会崩溃。随后试了一下,没有问题。
分享到:
相关推荐
Java IO体系是Java编程语言中用于处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、网络、内存缓冲区等)进行交互。在Java中,输入输出操作是通过流(Stream)的概念来实现的,流是数据传输的通道,可以...
本文将深入探讨Java IO中的RandomAccessFile类以及BufferedWriter和BufferedReader的使用。 RandomAccessFile类是Java提供的一种特殊类型的流,它允许对文件进行随机访问,这意味着程序可以随时定位到文件的任意...
例如,如果需要处理纯文本数据,优先考虑使用字符流,如使用BufferedReader和BufferedWriter提高读写效率。如果处理的是非文本数据,如图片、音频文件等,那么字节流(如FileInputStream和FileOutputStream)更为...
例如,可以使用`BufferedWriter`提高写入效率,通过`BufferedReader`和`BufferedWriter`组合实现文件的读写操作,或者探讨异常处理策略,如使用`try-with-resources`语句自动关闭流,以避免资源泄露。 总的来说,...
- BufferedReader和BufferedWriter是字符流的过滤流,它们提供缓冲区,提高了读写效率,并且BufferedReader提供readLine()方法方便读取整行文本。 3. File类 - File类是Java.io包中的核心类,用于文件和目录的...
Java标准库中提供了四种主要的缓冲流:`BufferedReader`、`BufferedWriter`、`BufferedInputStream`和`BufferedOutputStream`。 - **BufferedReader**:字符输入流,支持按行读取数据。 - **BufferedWriter**:字符...
Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的重要部分。它提供了丰富的类库,使得程序能够与各种设备、文件、网络以及内存数据进行交互。在这个主题中,我们将深入探讨Java IO的结构、核心概念...
- 文件操作:File类,BufferedReader和BufferedWriter等。 - 字节流和字符流的区别,以及转换流。 - NIO(New IO):Channel,Buffer,Selector等。 5. **网络编程**: - Socket编程,TCP和UDP的区别。 - ...
在Java编程语言中,IO(Input/Output)操作是处理输入和输出数据的关键部分。本篇文章将详细探讨如何使用Java进行文件的读写、追加、删除、移动、复制和修改等常见操作。我们将首先关注文件的读取方法,因为这是给定...
- 文件操作:File类,缓冲流BufferedReader和BufferedWriter。 7. **网络编程**: - Socket编程:TCP与UDP的区别,Socket和ServerSocket类。 - HTTP协议:理解GET和POST请求。 8. **反射**: - 获取类信息:...
- 了解字节流和字符流的区别,以及FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等常用类的用法。 - 掌握NIO(New IO)和AIO(Asynchronous IO)的特点和应用场景。 - 熟悉序列化和反序列...
1. **java.io包**: Java文件管理的核心在于`java.io`包,它提供了大量用于处理输入/输出流的类,如File类、FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等,这些类为我们提供了文件操作的...
- Python的`io.BufferedReader`和`io.BufferedWriter`。 5. 文件定位: - `fseek()` 和 `ftell()` 函数在C语言中用于改变文件指针位置和获取当前位置。 - Java的`SeekableByteChannel`接口提供了`position()`和`...
- 缓冲流:BufferedReader、BufferedWriter等提高读写效率。 - NIO(New IO):非阻塞I/O,用于提高并发性能。 7. **反射**: - Class类:动态加载类、获取类信息。 - 构造器、方法和字段的反射调用。 8. **...
- 缓冲流:提高读写效率,如BufferedReader、BufferedWriter。 - NIO(New IO):非阻塞I/O,包括Channel、Buffer和Selector。 - 文件操作:File类的常用方法,文件的读写操作。 6. **反射**: - Class类:如何...
BufferedReader和BufferedWriter用于提高文本读写性能,而DataInputStream和DataOutputStream则支持基本类型的数据读写。对于对象的持久化存储,可以利用ObjectOutputStream和ObjectInputStream实现序列化和反序列化...
- 缓冲流BufferedReader、BufferedWriter等提高读写效率。 - 转换流InputStreamReader、OutputStreamWriter用于在字节流和字符流之间转换。 7. **反射**: - 获取Class对象,创建动态对象。 - 调用私有方法和...
- 文件读写:FileReader、FileWriter、BufferedReader、BufferedWriter等类的使用。 - 流的概念,输入流和输出流的区别,以及如何进行数据传输。 - 序列化和反序列化,对象持久化。 4. **多线程** - Thread类和...
- 缓冲流:使用BufferedReader和BufferedWriter提高读写效率。 - 转换流:InputStreamReader和OutputStreamWriter用于在字节流和字符流之间转换。 5. **网络编程** - Socket编程:理解TCP和UDP协议,掌握Socket...
4. **输入输出流**:BufferedReader、BufferedWriter、FileReader、FileWriter等IO类的使用。 5. **多线程**:线程的创建、同步(synchronized、wait、notify等)、线程池。 6. **网络编程**:Socket编程,TCP/IP...