社区
Java SE
帖子详情
java 中的nio关于一行一行读文件,怎么读
javaDev1981
2007-09-11 04:10:24
这两天研究nio包,看的例子和说明,发现nio只能一个字节一个字节的读写没办法以行为单位进行读写,各位,有办法吗?
...全文
892
14
打赏
收藏
java 中的nio关于一行一行读文件,怎么读
这两天研究nio包,看的例子和说明,发现nio只能一个字节一个字节的读写没办法以行为单位进行读写,各位,有办法吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
syflyhua
2011-12-07
打赏
举报
回复
还有分吗,
lvzi98
2011-07-14
打赏
举报
回复
一个2M的文件,差不多有6千条数据左右。。。
我现在也和楼主一样的问题啊。。。。不知道楼主当年是怎么解决的。。。
qiye2008
2009-03-12
打赏
举报
回复
学习了!
javaDev1981
2007-09-12
打赏
举报
回复
zephyr_cc() ( ) 信誉:100 说的方法,如果一个文件是几百M,那是不是全部读入内存??
javaDev1981
2007-09-12
打赏
举报
回复
谢谢zephyr_cc
javaDev1981
2007-09-12
打赏
举报
回复
看来如果想一行一行处理,只能用传统的I/O了
zephyr_cc
2007-09-12
打赏
举报
回复
要是需要一行一行处理的话还是用BufferedReader的readLine吧...
我试了试,用ByteBuffer的话,光处理分行问题就费不少时间.
zephyr_cc
2007-09-11
打赏
举报
回复
为什么要设1K缓存呢?
按下面这样,有什么判断'\n','\r'的在content数组里面进行不就行了?
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class Test16 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
FileInputStream fi = new FileInputStream("1.txt");
FileChannel fc = fi.getChannel();
int length = (int) fc.size();
System.out.println(length);
MappedByteBuffer buffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, length);
byte[] content = new byte[length];
buffer.get(content, 0, length);
System.out.print(new String(content));
}
}
joejoe1991
2007-09-11
打赏
举报
回复
孙卫琴的<<java网络编程精解>>里讲的很清楚 不过我忘了。。
不好意思。。
javaDev1981
2007-09-11
打赏
举报
回复
用nio有没可能我定的缓存为1K,刚读入的文件数据中可能最后一行则只读了半行到内存,这样,如果根据/n/r来判断换行就会出问题??
javaDev1981
2007-09-11
打赏
举报
回复
用传统的I/O,不知刚才我说的需求能不能达到要求
javaDev1981
2007-09-11
打赏
举报
回复
主要是我要把文件中的内容一行一行的读出后进行解析,如果用nio,刚只能是按块进行读,这样,我就很难或者没办法得到一行及其一行里的内容了(我现在操作的文件一般都有2M,一次最少操作上百个文件,所以想找个能不占资源的I/O),不知各位有没好方法?谢谢。。。。。
zephyr_cc
2007-09-11
打赏
举报
回复
如果把readline()这样的方法看成是使用一个小缓冲区的话,
nio就是使用一个大缓冲区作为一个单位读写.
'行'是视觉上的概念,计算机不过是通过'\n','\r'区分的.
amazeur
2007-09-11
打赏
举报
回复
up
不能封装能别的吗
java
nio
大
文件
_
JAVA
之
NIO
按行
读
取大
文件
做项目过程
中
遇到要解析100多M的TXT
文件
,并入库。用之前的FileInputStream、BufferedReader显然不行了,虽然readLine这方法可以直接按行
读
取,但是去
读
一个140M左右,68W条数据的
文件
时,不但耗时长而且会内存溢出,即你等不到
读
完68W条数据时就内存溢出了。所以得用
NIO
下面的相关对象及方法。用到 字节缓冲区(
Java
.
nio
.ByteBuffer);用于
读
取、...
使用
java
nio
实现按行
读
写
文件
最近在了解
java
nio
相关的一些知识,在网上看到了一篇通过
java
nio
来按行
读
取
文件
的博客,于是为了练手就自己实现了下,关于
java
nio
的基础知识这里就不多说了,具体代码实现如下: import
java
.io.FileNotFoundException; import
java
.io.IOException; import
java
.io.RandomAccessF...
java
.
nio
.file.Files
一行
一行
读
取
文件
JDK1.7
中
引入了新的
文件
操作类
java
.
nio
.file这个包, 其
中
有个Files类它包含了很多有用的方法来操作
文件
,比如检查
文件
是否为隐藏
文件
, 或者是检查
文件
是否为只
读
文件
。开发者还可以使用Files.readAllBytes(Path)方法把整个
文件
读
入内存, 此方法返回一个字节数组,还可以把结果传递给String的构造器,以便创建字符串输出。 此方法确保了当
读
入
文件
的所有字节内容时...
java
-
nio
读
写
文件
java
-
nio
读
写
文件
Java
NIO
读
/写入
文件
前言
Java
NIO
(new/inputstream outputstream)使用通道、缓冲来操作流,所以要深刻理解这些概念,尤其是,缓冲
中
的数据结构(当前位置(position)、限制(limit)、容量(capacity)),这些知识点要通过写程序慢慢体会。
NIO
vs 传统IO
NIO
是面向缓冲、通道的;传统IO面向流 通道是双向的既可以写、也可以
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章