返回顶部
首页 > 资讯 > 精选 >Java文件I/O的方法有哪些
  • 896
分享到

Java文件I/O的方法有哪些

2023-06-17 04:06:24 896人浏览 薄情痞子
摘要

本篇内容介绍了“Java文件I/O的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先文件读入输出流常用有三种:FileInput

本篇内容介绍了“Java文件I/O的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

首先文件读入输出流常用有三种:FileInputStream/FileOutputStream,FileReader/FileWriter,RandoMaccessFile。下面具体列出一些简单的例子参考:

基础篇:

1.

FileRead fr = new FileReader(filename);  String s;  while( (s=fr.readLine())!=null){  ...  }  fr.close();  //FileWriter同理,输出时可用write()函数  //Java I/O中所有的Reader、Writer都是面向字符流的输出输出

2.

FileInputStream fi =new FileInputStream(filename);  int in;  while( (in=fi.read())!=-1){  ...  }  fi.close();  //FileOutputStream同理  //Java I/O中所有的Reader、Writer都是面向字节流的输出输出

3.

RandomAccessFile ra =new RandomAccessFile(filename,"rw");//后面的参数指定的是  打开文件流的方式,“rw”是指读写,“r”是只读,Java不提供只写  ra.seek(number);//将文件指针移动到number处,这里文件指针可以理解为文件开始读的位置  ra.skipByte(number);//跳过number个字节  ra.read();  ra.close();  //RandomAccessFile既可以读也可以写,而且可以利用seek()函数指定位置

下面是百度百科的一些介绍:

RandomAccessFile是不属于InputStream和OutputStream类系的。实际上,除了实现Datainput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至都没有用InputStream和OutputStream已经准备好的功能;它是一个完全独立的类,所有方法(绝大多数都只属于它自己)都是从零开始写的。这可能是因为RandomAccessFile能在文件里面前后移动,所以它的行为与其它的I/O类有些根本性的不同。总而言之,它是一个直接继承Object的,独立的类。

进阶篇:

NIO中,Java重新实现了I/O流,并且引入了一些新的方法来提高速度。我主要介绍通道、内存映射文件

1.通道:

通道和缓冲器是一个成对的概念,Thinking in  Java中的一个例子特别好理解:我们把想要读入的文件看作一个煤矿,数据就是我们想要的煤炭。通道好比是传送煤矿的传送带,我们没有办法直接从传送带上拿走煤炭,只好利用卡车来装载这些煤炭,卡车就是缓冲器,它主要负责从通道中取出数据,传给我们写的程序。***能与通道交互的缓冲器是ByteBuffer。可以看出和通道支持的解析流的方式是字节流。所以它配套使用的是FileInputStream/FileOutputStream,RandomAccessFile

例子:

a.

FileChannel fc =new FileOutputStream(filename).getChannel();  fc.write(ByteBuffer.wrap("something test".getBytes() ));//这里使用ByteBuffer比较简单,其实ByteBuffer可以利用个put()函数写入byte数组  fc.close();

b.

fc= new FileOutputStream(filename).getChannel();  ByteBuffer buff = ByteBuffer.allocate(size);//没错,ByteBuffer是不提供显示构造函数的,想要新建一个对象必须利用allocate()函数来分配空间。  fc.read(buff);  fc.close();

为什么想到要用通道来做I/O呢?主要考虑的是性能问题,通道加缓冲器能够让程序一些读写一定量的字符,而只使用InputStream/OutputStream,Reader/Writer只能一次读写一个字节/字符。而程序在进行I/O时要交给操作系统去解决这部分功能(调用系统调用),减少交给操作系统的次数可以有效的消减I/O花费的时间

2.内存映射文件:

内存映射文件主要的意思其实假定将文件都放入内存中,把它当作非常大的数组来访问,效率特别好。为什么比较好呢?这要从Java虚拟机和操作系统开始说起。Java  I/O主要的实现手段肯定是利用系统调用,而系统调用先将想要使用的文件从硬盘调入到内核的I/O缓冲区中,这次会导入比Java程序想要的文件更多的内容(拷入更多的内容是因为程序的局部性原理,能够得到更好的效率),然后再从内核的I/O缓冲区导入到Java进程自己的私有内存空间中。而内存映射文件放弃了两次拷贝的方法,直接将Java进程的虚拟空间与文件对象构成一个映射,当私有内存空间中找不打想要的内容时发生缺页异常,然后利用更底层的系统调用解决这个问题(其实在I/O的系统调用中也涉及到了缺页异常处理),好处就是减少了一次从内核I/O缓冲区到进程私有地址的开销。

例子:

FileChannel fc = new RandomAccessFile(filename,"rw").getChannel();  MappedByteBuffer mb = fc.map(FileChannel.MapMode.READ_WRITE,start,length);  mb.put((byte)'x');  mb.get();  fc.close();

“Java文件I/O的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java文件I/O的方法有哪些

本文链接: https://lsjlt.com/news/287176.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java文件I/O的方法有哪些
    本篇内容介绍了“Java文件I/O的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先文件读入输出流常用有三种:FileInput...
    99+
    2023-06-17
  • java使用Buffer进行I/O流操作的方法有哪些
    小编给大家分享一下java使用Buffer进行I/O流操作的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用Buffer进行I/O流操作除NIO外,使...
    99+
    2023-06-27
  • Node中的I/O模型有哪些
    这篇文章主要为大家展示了“Node中的I/O模型有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Node中的I/O模型有哪些”这篇文章吧。我们以网络请求IO...
    99+
    2024-04-02
  • 文件 I/O 的艺术:Java 中的优雅文件操作
    ...
    99+
    2024-04-02
  • Java 非阻塞I/O使用方法
    绝大部分知识与实例来自O'REILLY的《Java网络编程》(Java Network Programming,Fourth Edition,by Elliotte Rusty Harold(O'REILLY))。非阻塞I/O简介非阻塞I/...
    99+
    2023-05-31
    java 非阻塞 i/o
  • Java I/O系统基础知识具体都有哪些
    Java I/O系统基础知识具体都有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。编程语言的I/O类库中常常使用流这个抽象的概念,它代表任何有能力产生数据的数据源对象或...
    99+
    2023-06-17
  • Java基础知识之I/O流和File类文件操作方法
    今天小编给大家分享一下Java基础知识之I/O流和File类文件操作方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。♒I/...
    99+
    2023-06-30
  • java创建文件的方法有哪些
    Java创建文件的方法有以下几种: 使用File类的createNewFile()方法:使用File类的createNewFile...
    99+
    2023-10-24
    java
  • java文件操作的方法有哪些
    这篇文章主要讲解了“java文件操作的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java文件操作的方法有哪些”吧!文件的建立/检查与删除<%@ page="&q...
    99+
    2023-06-03
  • Java文件读取的方法有哪些
    今天小编给大家分享一下Java文件读取的方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。BufferedReader...
    99+
    2023-07-06
  • STM32单片机I/O的工作模式有哪些
    这篇文章主要讲解了“STM32单片机I/O的工作模式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“STM32单片机I/O...
    99+
    2024-04-02
  • java读取文本文件的方法有哪些
    Java读取文本文件的方法有以下几种:1. 使用FileReader和BufferedReader类:使用FileReader类读取...
    99+
    2023-09-20
    Java
  • java读取xml文件的方法有哪些
    Java读取XML文件的方法有以下几种:1. 使用DOM解析器:DOM解析器将整个XML文档加载到内存中,形成一个树形的DOM对象,...
    99+
    2023-09-27
    java
  • Java XML文件解析的方法有哪些
    Java中有多种方法可以解析XML文件,其中常用的有以下几种:1. DOM解析器:使用DOM解析器可以将整个XML文档加载到内存中,...
    99+
    2023-09-14
    java
  • java读取excel文件的方法有哪些
    1. 使用POI库:POI是Apache的一个开源项目,提供了读取、写入和操作Microsoft Office格式文件的Java A...
    99+
    2023-05-29
    java读取excel文件 java
  • Java文件重定向与I/O流的关系是什么?
    在Java编程中,文件重定向和I/O流是两个非常重要的概念。它们之间有着密切的关系,本文将通过详细的解释和演示代码,来探讨Java文件重定向与I/O流的关系。 一、文件重定向 在Linux和Unix系统中,文件重定向是一种常见的操作。通过...
    99+
    2023-09-05
    文件 重定向 load
  • Java中删除文件或文件夹的方法有哪些
    本篇内容介绍了“Java中删除文件或文件夹的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!删除文件或文件夹的四种基础方法下面的四个...
    99+
    2023-07-06
  • java修改文件内容的方法有哪些
    Java 修改文件内容的方法有以下几种:1. 使用FileWriter和BufferedWriter类:通过创建FileWriter...
    99+
    2023-08-29
    java
  • Java实现文件上传的方法有哪些
    这篇文章给大家分享的是有关Java实现文件上传的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一. uploadify:uploadify控件的scripts和styles在这里:图片上传JSP:<...
    99+
    2023-05-30
    java
  • java实现操作文件的方法有哪些
    这篇文章将为大家详细讲解有关java实现操作文件的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java7中文件IO发生了很大的变化,专门引入了很多新的类:import java....
    99+
    2023-05-31
    java 文件操作
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作