「java逐行读取文件」java逐行读取文件筛选写入
今天给各位分享java逐行读取文件的知识,其中也会对java逐行读取文件筛选写入进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java编程:从一个名为file的文件中逐行读取然后将读取的内容放进另一个文件file1中。
- 2、java中用scanner逐行读取文件,但某一行的数据太大,可以达到上千万个字符
- 3、利用java.nio的FileChannel能够实现按行读取文件吗?(解决了)
java编程:从一个名为file的文件中逐行读取然后将读取的内容放进另一个文件file1中。
/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*
* @param fileName
* 文件名
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 文件写入
*
* @param filePath 路径名称
* @param sb 要写入的字符
*/
public void writeFromBuffer(String filePath, String sb)throws IOException {
File file = new File(filePath);
FileWriter fw;
try {
fw = new FileWriter(file);
if (sb.toString() != null !"".equals(sb.toString())) {
fw.write(sb.toString());
}
fw.close();
} catch (IOException e) {
throw new IOException("文件写入异常!请检查路径名是否正确!");
}
}
自己组织一下,读取的数据可以放在stringbuffer里然后在传给写入方法
java中用scanner逐行读取文件,但某一行的数据太大,可以达到上千万个字符
如果是这样的话,不建议通过scanner来读取那么大量的字符数,建议您把原本要输入的数据存储到一个文件中,然后scanner读取的只是一个文件路径,然后在你的程序中来解析这个文件的数据即可,这样也好维护好扩展,不至于在命令行下输入一大堆东西,有时候都搞不清楚了,而且你直接输入命令行,还会出现各种问题,假设你的数据中包含空格什么的,会被拆分成多个,总之这种做法是极其不推荐的,希望你能考虑使用我上面提到的方法试试。
利用java.nio的FileChannel能够实现按行读取文件吗?(解决了)
利用java.nio的FileChannel能够实现按行读取文件:
具体思路是:设置两个缓冲区,一大一小,大的缓冲区为每次读取的量,小的缓冲区存放每行的数据(确保大小可存放文本中最长的那行)。读取的时候判断是不是换行符13,是的话则返回一行数据,不是的话继续读取,直到读完文件。
实现方法:
FileChannel fc=raf.getChannel();
//一次读取文件,读取的字节缓存数
ByteBuffer fbb=ByteBuffer.allocate(1024*5);
fc.read(fbb);
fbb.flip();
//每行缓存的字节 根据你的实际需求
ByteBuffer bb=ByteBuffer.allocate(500);
//判断是否读完文件
public boolean hasNext() throws IOException {
if(EOF)return false;
if(fbb.position()==fbb.limit()){//判断当前位置是否到了缓冲区的限制
if(readByte()==0) return false;
}
while(true){
if(fbb.position()==fbb.limit()){
if(readByte()==0) break;
}
byte a=fbb.get();
if(a==13){
if(fbb.position()==fbb.limit()){
if(readByte()==0) break;
}
return true;
}else{
if (bb.position() bb.limit()) {
bb.put(a);
}else {
if(readByte()==0) break;
}
}
}
return true;
}
关于java逐行读取文件和java逐行读取文件筛选写入的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。