[转]探究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 ...
随机推荐
- ElasticSearch(5)-Mapping
一.Mapping概述 映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串值,Elasticsearch需要知道每个字段里面都包含了 ...
- Rancher安装使用
官网 http://docs.rancher.com/rancher/latest/en/quick-start-guide/#add-hosts 安装步骤: 1 Start up a Linux m ...
- 感知哈希算法 python 3.4
#!/usr/bin/python # -*- coding: UTF-8 -*- #Less than 10 add to list and sort import glob import os i ...
- 解决网页在手机浏览器打开不停刷新的方案(百度的ua自动转向js问题)
一:发现问题 原有可能是网站内挂了一个百度的ua自动转向js,手机访问的话会被自动转到feiyujd.com,然后又被转到www点feiyujd点com,这样反复死循环.就形成了一直在刷新,网站一闪一 ...
- 配置elasticsearch 以及ik分词
https://github.com/medcl/elasticsearch-analysis-ikhttps://www.elastic.co/downloads/past-releases/ela ...
- web跨域问题
环境: win7_x64旗舰版.Google Chrome-v44.0.2403.155.node-v0.10.29.express-v3.2.5.jQuery-v1.8.3 一.跨域GET: 客户端 ...
- UEFI BIOS模式下Windows系统启动过程以及引导文件修复方法
有关UEFI BIOS基础知识的简介,一年前在网易博客做过详细的概述.鉴于某些网友仍然对UEFI下Windows的启动过程不甚了解,虽然网上有各式各样的启动修复工具,但是对于新手来说,如果不明白其中的 ...
- [PHP] 安装和配置
Apachehttpd-2.2.19-win64mysql5.6Phphttp://www.php.net/downloads.php 5.4Phpeclipsehttp://www.phpeclip ...
- 快速切换天财商龙门店后台.VB6.0
名称:快速切换天财商龙门店后台 作者:landv 时间:2015年8月21日 功能:快速切换天财商龙门店后台 环境:VB6.0 注:懒的一行一行修改文件了,直接覆盖配置文件,Tcgem.ini 只能反 ...
- H5的新应用-使用Web Worker为学生考试计时
-------------------------- <script type="text/javascript"> //初始化函数 ...