[转]探究java IO之FileInputStream类
使用FileInputStream类创建的InputStream对象可以用于从文件读取内容。两个常用的构造函数如下所示:
1
2
|
FileInputStream(String filePath) FileInputStream(File fileObj) |
这两个构造函数都会抛出FileNotFoundException异常。其中,filePath是文件的完整路径名,fileObj是描述文件的File对象。
下面的例子创建了两个FileInputStream对象,它们使用相同的磁盘文件,并且分别是使用这两个构造函数创建的:
1
2
3
|
FileInputStream f0 = new FileInputStream( "/autoexec.bat" ); File f = new File( "/autoexec.bat" ); FileInputStream f1 = new FileInputStream(f); |
尽管第一个构造函数可能更常用,但是使用第二个构造函数,在将文件附加到输入流之前,可以使用File类的方法对文件进行进一步检查。当创建FileInputStream对象时,还可以为读取而打开流。FileInputStream类重写了InputStream抽象类中的6个方法,但没有重写mark()和reset()方法。当在FileInputStream对象上试图调用reset()方法,会抛出IOException异常。
如例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package io; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class FileInputStreamDemo1 { public static void main(String[] args) { try (InputStream in = new FileInputStream( "/home/fuhd/work/workspace/java/decompile/src/com/fhd/DownloadApkUtil.java" ); OutputStream out = new BufferedOutputStream(System.out)){ int num = in.available(); System.out.println( "文件总大小为:" + num + "字节" ); int k; byte [] buffer = new byte [ 1024 ]; while ((k = in.read(buffer)) != - 1 ){ /* * 这里最好定义成从0下标读取,读取K个字节,以免造成重复读取以前的数据。 * 比如,最后一次读取字节没有装载满buffer时,没被装载的空间可能还是上一次 * 的数据。例如:上次读取到buffer的为:[1,2,3,4,5,6],而这一次最后读取了7,8,9 * 这三个数,那现在buffer中为:[7,8,9,4,5,6],如果直接用out.write(buffer)读会 * 读出多余的数据,所以使用out.write(buffer,0,k)就不会重复读取。 */ out.write(buffer, 0 ,k); } } catch (IOException e){ e.printStackTrace(); } } } |
[转]探究java IO之FileInputStream类的更多相关文章
- Java—IO流 File类的常用API
File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOE ...
- java io包File类
1.java io包File类, Java.io.File(File用于管理文件或目录: 所属套件:java.io)1)File对象,你只需在代码层次创建File对象,而不必关心计算机上真正是否存在对 ...
- Java IO 之 FileInputStream & FileOutputStream源码分析
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- 【Java IO】FileInputStream 和 FileOutputStream
class FileInputStream extends InputStream implements Closeable
- java IO之 File类+字节流 (输入输出 缓冲流 异常处理)
1. File类
- java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
FileInputStream <span style="font-family:Verdana;">import java.io.File; import java. ...
- 系统学习 Java IO (三)----文件类 File
目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统. 使用 File 类,可以: 检查文件或目录是否存在. 如果目录不存在,创建一个目录 ...
- JAVA:IO流——File类
1.掌握File 类的作用 2.可以使用File 类中的方法对文件进行操作 所有的 io 操作都保存在 java.io 包中. 构造方法:public File (String pathname) 直 ...
- JAVA自学之-----FileInputStream类
1, FileInputStream类函数创建: package coreJava; import java.io.FileInputStream; import java.io.IOExceptio ...
随机推荐
- kettle连接Hbase中数据导出(7)
http://wiki.pentaho.com/display/BAD/Extracting+Data+from+HBase+to+Load+an+RDBMS 1)新建转换——Big Data——Hb ...
- Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
storm集群里面工作机器分为两种一种是nimbus, 一种是supervisor, 他们通过zookeeper来进行交互,nimbus通过zookeeper来发布一些指令,supervisor去读z ...
- OMCS使用技巧 -- 摄像头及其动态能力
在开发类似视频聊天的应用时,我们经常需要获取摄像头的相关信息:而在进行视频聊天时,我们可能还希望有一些动态的能力.比如,在不中断视频聊天的情况下,切换一个摄像头.或者修改摄像头采集的分辨率或编码质量等 ...
- Centos7 设置DNS 服务器
在CentOS 7下,手工设置 /etc/resolv.conf 里的DNS,过了一会,发现被系统重新覆盖或者清除了.和CentOS 6下的设置DNS方法不同,有几种方式: 1.使用全新的命令行工具 ...
- Windows下QT4.8.4编译环境的搭建(转载http://blog.csdn.net/bestgonghuibin/article/details/38933141)
开始使用QT了,所以第一步就是把环境搭起来,这里小记一下,以免以后忘记. 1. 下载安装文件 要使用QT功能,那么必须要下载QT的源码,还必须要一个是用QT的编译环境,可以是VS2010,也可以是专用 ...
- mysql5.6 online ddl—索引
尝试对mysiam表(1500万)删除索引失败 #uk表字段类型比较简单,都是int/tinyint/timestamp类型. CREATE TABLE `uk` ( `id` int(11) NO ...
- 滚动条加粗和panel,gridControl结合用
private void FrmLotterycs_Load(object sender, EventArgs e) { t = 0; UserJuanquanTB = O.get_UserJuanq ...
- VMware+Windbg双机调试
虚拟机使用XP系统:
- linux常用服务软件搭建及使用技巧
一.Webmin安装: Webmin 是一个基于浏览器的管理工具,可以应用于Linux 和其他一些平台,提供了可以完成很多管理和操作任务的图形化界面 •安装完成后,root 用户会被自动创建,密码为系 ...
- Kubernetes 1.5.1 部署
> kubernetes 1.5.0 , 配置文档 # 1 初始化环境 ## 1.1 环境: | 节 点 | I P ||--------|-------------||n ...