当前位置:首页 > JAVA教程 > 正文内容

java中怎样读取文件?【JAVA教程】,java

搜教程4年前 (2019-12-04)JAVA教程165

读取文件有多种体式格局,基于传统的输入流体式格局或基于nio的Buffer缓冲对象和管道读取体式格局以至异常疾速的内存映照读取文件。

java中四种读取文件体式格局:(引荐:java视频教程)

1、RandomAccessFile:随机读取,比较慢长处就是该类可读可写可操纵文件指针

2、FileInputStream:io平常输入流体式格局,速率效力平常

3、Buffer缓冲读取:基于nio Buffer和FileChannel读取,速率较快

4、内存映照读取:基于MappedByteBuffer,速率最快

RandomAccessFile读取

//RandomAccessFile类的中心在于其既能读又能写

public void useRandomAccessFileTest() throws Exception {

    RandomAccessFile randomAccessFile = new RandomAccessFile(new File("e:/nio/test.txt"), "r");

    byte[] bytes = new byte[1024];
    int len = 0;
    while ((len = randomAccessFile.read(bytes)) != -1) {
        System.out.println(new String(bytes, 0, len, "gbk"));
    }

    randomAccessFile.close();
}

FielInputStream读取

//运用FileInputStream文件输入流,比较中规中矩的一种体式格局,传统壅塞IO操纵。

public void testFielInputStreamTest() throws Exception {

    FileInputStream inputStream = new FileInputStream(new File("e:/nio/test.txt"));

    // 运用输入流读取文件,以下代码块险些就是模板代码
    byte[] bytes = new byte[1024];
    int len = 0;
    while ((len = inputStream.read(bytes)) != -1) {// 如果有数据就一向读写,不然就退出循环体,封闭流资本。
        System.out.println(new String(bytes, 0, len, "gbk"));
    }
    inputStream.close();
}

Buffer缓冲对象读取

// nio 读取

public void testBufferChannel() throws Exception {

    FileInputStream inputStream = new FileInputStream(new File("e:/nio/test.txt"));

    FileChannel fileChannel = inputStream.getChannel();
    ByteBuffer buffer = ByteBuffer.allocate(1024);

    // 以下代码也险些是Buffer和Channle的规范读写操纵。
    while (true) {
        buffer.clear();
        int result = fileChannel.read(buffer);
        buffer.flip();
        if (result == -1) {
            break;
        }
        System.out.println(new String(buffer.array(), 0, result, "gbk"));
    }
    inputStream.close();
}

内存映照读取

public void testmappedByteBuffer() throws Exception {

    FileInputStream inputStream = new FileInputStream(new File("e:/nio/test.txt"));
    FileOutputStream outputStream = new FileOutputStream(new File("e:/nio/testcopy.txt"),true);

    FileChannel inChannel = inputStream.getChannel();
    FileChannel outChannel = outputStream.getChannel();

    System.out.println(inChannel.size());
    MappedByteBuffer mappedByteBuffer = inChannel.map(MapMode.READ_ONLY, 0, inChannel.size());

    System.out.println(mappedByteBuffer.limit());
    System.out.println(mappedByteBuffer.position());

    mappedByteBuffer.flip();
    outChannel.write(mappedByteBuffer);

    outChannel.close();
    inChannel.close();
    outputStream.close();
    inputStream.close();

}

//基于内存映照这类体式格局,这么写彷佛有问题。


MappedByteBuffer和RandomAcessFile这两个类要零丁重点研究一下。

//TODO 大文件读取

更多java学问请关注java基础教程栏目。

以上就是java中怎样读取文件?的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/16419.html

标签: java
分享给朋友:

“java中怎样读取文件?【JAVA教程】,java” 的相关文章

什么是设想形式【JAVA教程】,设计模式,创建模式,结构模式,行为模式

什么是设想形式【JAVA教程】,设计模式,创建模式,结构模式,行为模式

设想形式是在软件设想中常见题目的通用、可重复运用、多数人晓得的一种解决方案或模板;这些解决方案是在相称长的一段时间内由浩瀚软件开发人员经由过程重复实验取得的。下面我们就来带人人认识一下设想形式,愿望对人人有所协助。 设想形式的运用 设想形式在软件开发中有两个主要用途。【视频教程引荐:Ja...

JSP与Servlet之间的区分【JAVA教程】,JSP,Servlet,java

JSP与Servlet之间的区分【JAVA教程】,JSP,Servlet,java

Servlet和JSP是两种最盛行的Java Web手艺,它们在Java Web应用顺序中生成动态内容。那末它们之间有什么区分?下面本篇文章就来带人人认识一下JSP与Servlet,简朴引见一下它们之间的区分,愿望对人人有所协助。【视频教程引荐:Java教程】 JSP是什么? JSP是一...

Java完成基数排序(RadixSort)的代码示例【JAVA教程】,Java

Java完成基数排序(RadixSort)的代码示例【JAVA教程】,Java

本篇文章给人人带来的内容是关于Java完成基数排序(RadixSort)的代码示例,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 基数排序算是桶排序和计数排序的衍生吧,由于基数排序内里会用到这两种个中一种。 基数排序针对的待排序元素是要有高低位之分的,比方单词adobe,a...

JSP中隐式对象是什么?隐式对象的范例【JAVA教程】,JSP,隐式对象

JSP中隐式对象是什么?隐式对象的范例【JAVA教程】,JSP,隐式对象

JSP容器供应了一个对象列表,许可我们接见Web运用程序中的种种数据;这些对象称为隐式对象,因为它们在剧本中自动可用。下面本篇文章就来带人人相识一下JSP中的隐式对象,相识JSP中经常运用的隐式对象,愿望对人人有所协助。 JSP中隐式对象是什么? JSP中的隐式对象是Web容器自动建立的...

Java多线程之Callable和Future的细致引见(代码示例)【JAVA教程】,多线程,java

本篇文章给人人带来的内容是关于Java多线程之Callable和Future的细致引见(代码示例),有一定的参考价值,有须要的朋侪可以参考一下,愿望对你有所协助。 Callable和Future涌现的缘由 建立线程的2种体式格局,一种是直接继续Thread,别的一种就是完成Runnable接口。...

java中强援用,软援用,弱援用和虚援用的对照引见【JAVA教程】,java

本篇文章给人人带来的内容是关于java中强援用,软援用,弱援用和虚援用的对照引见,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 强援用 假如一个对象具有强援用,垃圾接纳器绝不会接纳它.当内存空间不足时,java虚拟机情愿抛出OutOfMemoryError毛病,使顺序非常停止,...