FileInputStream(文件输入流)
FileInputStream 类创建一个能从文件读取字节的InputStream 类,它的两个常用的构造函数如下:

FileInputStream(String filepath)
FileInputStream(File fileObj)

它们都能引发FileNotFoundException异常。这里,filepath 是文件的全称路径,fileObj是描述该文件的File对象。下面的例子创建了两个使用同样磁盘文件且各含一个上述构造函数的FileInputStreams类:

FileInputStream f0 = new FileInputStream("/autoexec.bat")
File f = new File("/autoexec.bat");
FileInputStream f1 = new FileInputStream(f);

尽管第一个构造函数可能更常用到,第二个构造函数允许在把文件赋给输入流之前用File方法更进一步检查文件。当一个FileInputStream被创建时,它可以被公开读取。

FileInputStream重载了抽象类InputStream的六个方法,mark( )和reset( )方法不被重载,任何关于使用FileInputStream的reset()尝试都会生成IOException异常。

下面的例题说明了怎样读取单个字节、字节数组以及字节数组的子界。它同样阐述了怎样运用available( )判定剩余的字节个数及怎样用skip( )方法跳过不必要的字节。该程序读取它自己的源文件,该源文件必定在当前目录中。

// Demonstrate FileInputStream.
import java.io.*;
class FileInputStreamDemo { public static void main(String args[]) throws Exception { int size; InputStream f = new FileInputStream("FileInputStreamDemo.java"); System.out.println("Total Available Bytes: " + (size = f.available())); int n = size/40; System.out.println("First " + n + " bytes of the file one read() at a time"); for (int i=0; i < n; i++) { System.out.print((char) f.read()); } System.out.println("\nStill Available: " + f.available()); System.out.println("Reading the next " + n + " with one read(b[])"); byte b[] = new byte[n]; if (f.read(b) != n) { System.err.println("couldn't read " + n + " bytes."); } System.out.println(new String(b, 0, n)); System.out.println("\nStill Available: " + (size = f.available())); System.out.println("Skipping half of remaining bytes with skip()"); f.skip(size/2); System.out.println("Still Available: " + f.available()); System.out.println("Reading " + n/2 + " into the end of array"); if (f.read(b, n/2, n/2) != n/2) { System.err.println("couldn't read " + n/2 + " bytes."); } System.out.println(new String(b, 0, b.length)); System.out.println("\nStill Available: " + f.available()); f.close(); }
}

下面是该程序的输出:

Total Available Bytes: 1433
First 35 bytes of the file one read() at a time
// Demonstrate FileInputStream.
im
Still Available: 1398
Reading the next 35 with one read(b[])
port java.io.*;
class FileInputS
Still Available: 1363
Skipping half of remaining bytes with skip()
Still Available: 682
Reading 17 into the end of array
port java.io.*;
read(b) != n) {
S
Still Available: 665

这个有些刻意创作的例子说明了怎样读取数据的三种方法,怎样跳过输入以及怎样检查流中可以获得数据的数目。

开课吧Java课程之详解文件输出流FileInputStream相关推荐

  1. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  2. Java期末复习题详解

    Java期末复习题详解 选择题 1 .class: .java: .cpp: .txt: 2 3 4 封装: 继承: 覆盖: 重载: 5 构造函数: 特点: 6 异常处理: 注:catch可以进行多重 ...

  3. Java内存溢出详解之Tomcat配置

    Java内存溢出详解 转自:http://elf8848.iteye.com/blog/378805 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError ...

  4. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  5. Java类加载机制详解【java面试题】

    Java类加载机制详解[java面试题] (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数 ...

  6. Java线程池详解学习:ThreadPoolExecutor

    Java线程池详解学习:ThreadPoolExecutor Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) - zhangpeterx的博客 在源码的目录java/util/ ...

  7. Java 线程池详解学习:FixedThreadPool,CachedThreadPool,ScheduledThreadPool...

    Java常用的线程池有FixedThreadPool和CachedThreadPool,我们可以通过查看他们的源码来进行学习. Java的源码下载参考这篇文章:Java源码下载和阅读(JDK1.8) ...

  8. 关于Java的Classpath详解

    关于Java的Classpath详解 Java 的新入门者对classpath往往比较困惑,为何在开发环境中能运行的东东出去就不好,或在外面运行的东东挺溜的进了开发环境就死菜. java的优点就是他是 ...

  9. Java内存溢出详解

    Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在 ...

最新文章

  1. 熬夜之作:一文带你了解Cat分布式监控
  2. Tensorflow:如何保存/恢复模型?
  3. 怎样判断RadioButtonList控件是否有选择
  4. python django设置中文及时区
  5. Struts2-获取值栈对象与结构
  6. python爬取网易云音乐评论并进行可视化分析
  7. LabVIEW之安装队列工具包AMC安装问题解决
  8. Python数据结构与算法(1.4)——Python基础之控制结构
  9. 用C#实现***程序
  10. SadpTool 海康设备网络搜索工具
  11. 图形 1.1渲染流水线(知识梳理笔记)
  12. 易企秀如何生成图片_易企秀如何制作圆形照片
  13. Python中的算数运算符
  14. 网易面试题——快速无条件分支的 RGB、HSV 互转【GLSL】
  15. 小米机器人虚拟墙设置_扫地机器人虚拟墙介绍及怎样设置
  16. p5.js创意绘图(2)自画像
  17. 图文并茂,一文读懂信号源
  18. java根据ip地址获取城市地域信息
  19. 三聚氰胺最新价格,创2017年以来价格新低
  20. 虚拟团队四大管理技巧

热门文章

  1. [转载] python中list与string的转换
  2. iOS直播集成和问题总结(阿里云直播)
  3. 校赛热身 Problem C. Sometimes Naive (状压dp)
  4. VS2017不能打开stdio.h等文件
  5. Angularjs1培训
  6. OSGi.NET 学习笔记 [模块化和插件化][概念]
  7. C#的Access数据库的连接类
  8. iOS6中旋转的略微改变
  9. 中国移动创新系列丛书《OPhone应用开发权威指南》读者交流活动圆满结束
  10. FlowNet: Learning Optical Flow with Convolutional Networks