专栏首页Java研发军团Java之IO-字节流

Java之IO-字节流

FileInputStream

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。有多种构造方法可用来创建对象,主要是读取字节的。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件。

InputStream f = new FileInputStream("C:/java/1.txt");

也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象

File f = new File("C:/java/1.txt");
FileInputStream out = new FileInputStream(f);

所有方法:

下面介绍几个常用方法:

public void read() throws IOException{}

public int read(int r)throws IOException{}

read(byte[] b, int off, int len) throws IOException{}

操作方法与FileReader很类似,我就演示一个吧。

值得一提的native方法   上面核心方法中为什么实现简单,因为工作量都在native方法里面,即JVM里面实现了。native倒是不少,一一列举吧:

native void open(String name) // 打开文件,为了下一步读取文件内容

native int read0() // 从文件输入流中读取一个字节

native int readBytes(byte b[], int off, int len) // 从文件输入流中读取,从off句柄开始的len个字节,并存储至b字节数组内。

native void close0() // 关闭该文件输入流及涉及的资源,比如说如果该文件输入流的FileChannel对被获取后,需要对FileChannel进行close。

其它还有值得一提的就是,在jdk1.4中,新增了NIO(关于NIO后续再进阶中再讲述)包,优化了一些IO处理的速度,所以在FileInputStream和FileOutputStream中新增了FileChannel getChannel()的方法。即获取与该文件输入流相关的 java.nio.channels.FileChannel对象。

FileOutputStream

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

使用字符串类型的文件名来创建一个输出流对象:

OutputStream f = new FileOutputStream("C:/java/1.txt ")

也可以使用一个文件对象来创建一个输出流来写文件。

我们首先得使用File()方法来创建一个文件对象:

File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);

介绍几个常用的方法

public void read() throws IOException{}
public int read(int r)throws IOException{}
read(byte[] b, int off, int len) throws IOException{}

操作方法与FileWriter很类似,我就演示一个吧。

以上还会有其它集成的方法,大家都可以自己测试一下就好了,在这里就不一个个演示了。

还有其它的流对象基本上用法一致,我就不一一讲解了基本都是成对成对的出现。

比如:

InputStream,OutputStream

本文分享自微信公众号 - Java研发军团(ityuancheng),作者:猿程之家

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基本数据类型的包装类

    Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计...

    用户5224393
  • 网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解

    响应时间是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。响应时间是指执行一个请求从开始到最后收到响应数据所花费的总体时间。

    用户5224393
  • 【面试】谈谈提升Java性能的40个优化细节!!!

    在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。

    用户5224393
  • linux系统编程之文件与I/O(二):文件的读取写入

    一、read系统调用 一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件...

    s1mba
  • Linux系统编程:基本I/O系统调用

    Tencent JCoder
  • 内功修炼-算法1

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    Share猿
  • 为什么C语言会有头文件

    前段时间一个刚转到C语言的同事问我,为什么C会多一个头文件,而不是像Java和Python那样所有的代码都在源文件中。我当时回答的是C是静态语言很多东西都是需要...

    Masimaro
  • linux系统编程之文件与I/O(一):文件的打开关闭

    一、文件描述符 对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的。当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数)。后续...

    s1mba
  • 【死磕Java并发】—–J.U.C之重入锁:ReentrantLock

    此篇博客所有源码均来自JDK 1.8 ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是Reen...

    用户1655470
  • pytorch基础知识-常见激活函数(上)

    在青蛙神经反射中,科学家们发现给予神经两个神经信号,输出的并不是两者的加和,而是仿佛有一个阈值,在总信号强度达到某一定值时,才会有输出信号。

    用户6719124

扫码关注云+社区

领取腾讯云代金券