想请教如何能按bufferedreader缓冲的大小分批读取完整个文件?(即读取到缓冲区满以后自动清空缓冲,继续读直到文件结束)
另外:bufferedreader默认的缓冲区大小是多少?如果自己制定太大的话会不会对程序运行效率产生影响?
谢谢
9 个解决方案
#1
BufferedReader bin = BufferedReader(Reader in, int sz)
创建一个使用指定sz大小输入缓冲区的缓冲字符输入流。
默认缓冲不清楚了,自己指定也行,应该不会有影响的
创建一个使用指定sz大小输入缓冲区的缓冲字符输入流。
默认缓冲不清楚了,自己指定也行,应该不会有影响的
#2
即读取到缓冲区满以后自动清空缓冲,继续读直到文件结束//本来就是这样作的啊!你看看加上流名.flush()会怎么用;
-----------
分批读取完整个文件?应该不可以做到
-----------
-----------
分批读取完整个文件?应该不可以做到
-----------
#3
$ zz╭ ╮╭ ﹌╮. $
$ z(o-.-o)(o-.-o) . $
$ ┏~﹊︸ ̄~﹊︸ ̄~┓ $
$ IT者-IT开发者的网站-- $
$ 10万篇技术资料--天天更新 $
$ -----www.itzhe.cn----- $
$ z(o-.-o)(o-.-o) . $
$ ┏~﹊︸ ̄~﹊︸ ̄~┓ $
$ IT者-IT开发者的网站-- $
$ 10万篇技术资料--天天更新 $
$ -----www.itzhe.cn----- $
#4
读取百M甚至是G级量的数据,最好用MappedByteBuffer 来进行操作
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class LargeMappedFiles {
static int length = 0x8FFFFFF; // 128 Mb
public static void main(String[] args) throws Exception {
MappedByteBuffer out =
new RandomAccessFile("test.dat", "rw").getChannel()
.map(FileChannel.MapMode.READ_WRITE, 0, length);
for(int i = 0; i < length; i++)
out.put((byte)'x');
System.out.println("Finished writing");
for(int i = length/2; i < length/2 + 6; i++)
System.out.print((char)out.get(i)); //read file
}
}
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class LargeMappedFiles {
static int length = 0x8FFFFFF; // 128 Mb
public static void main(String[] args) throws Exception {
MappedByteBuffer out =
new RandomAccessFile("test.dat", "rw").getChannel()
.map(FileChannel.MapMode.READ_WRITE, 0, length);
for(int i = 0; i < length; i++)
out.put((byte)'x');
System.out.println("Finished writing");
for(int i = length/2; i < length/2 + 6; i++)
System.out.print((char)out.get(i)); //read file
}
}
#5
据说回帖能得10分?
#6
YES!
#7
回帖试试
#8
其实我是来看lz的
#9
其实我想求解的
#1
BufferedReader bin = BufferedReader(Reader in, int sz)
创建一个使用指定sz大小输入缓冲区的缓冲字符输入流。
默认缓冲不清楚了,自己指定也行,应该不会有影响的
创建一个使用指定sz大小输入缓冲区的缓冲字符输入流。
默认缓冲不清楚了,自己指定也行,应该不会有影响的
#2
即读取到缓冲区满以后自动清空缓冲,继续读直到文件结束//本来就是这样作的啊!你看看加上流名.flush()会怎么用;
-----------
分批读取完整个文件?应该不可以做到
-----------
-----------
分批读取完整个文件?应该不可以做到
-----------
#3
$ zz╭ ╮╭ ﹌╮. $
$ z(o-.-o)(o-.-o) . $
$ ┏~﹊︸ ̄~﹊︸ ̄~┓ $
$ IT者-IT开发者的网站-- $
$ 10万篇技术资料--天天更新 $
$ -----www.itzhe.cn----- $
$ z(o-.-o)(o-.-o) . $
$ ┏~﹊︸ ̄~﹊︸ ̄~┓ $
$ IT者-IT开发者的网站-- $
$ 10万篇技术资料--天天更新 $
$ -----www.itzhe.cn----- $
#4
读取百M甚至是G级量的数据,最好用MappedByteBuffer 来进行操作
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class LargeMappedFiles {
static int length = 0x8FFFFFF; // 128 Mb
public static void main(String[] args) throws Exception {
MappedByteBuffer out =
new RandomAccessFile("test.dat", "rw").getChannel()
.map(FileChannel.MapMode.READ_WRITE, 0, length);
for(int i = 0; i < length; i++)
out.put((byte)'x');
System.out.println("Finished writing");
for(int i = length/2; i < length/2 + 6; i++)
System.out.print((char)out.get(i)); //read file
}
}
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class LargeMappedFiles {
static int length = 0x8FFFFFF; // 128 Mb
public static void main(String[] args) throws Exception {
MappedByteBuffer out =
new RandomAccessFile("test.dat", "rw").getChannel()
.map(FileChannel.MapMode.READ_WRITE, 0, length);
for(int i = 0; i < length; i++)
out.put((byte)'x');
System.out.println("Finished writing");
for(int i = length/2; i < length/2 + 6; i++)
System.out.print((char)out.get(i)); //read file
}
}
#5
据说回帖能得10分?
#6
YES!
#7
回帖试试
#8
其实我是来看lz的
#9
其实我想求解的