java.io.InputStream & java.io.FileInputStream

java.io.InputStream,这个抽象类是表示字节输入流的超类,这个抽象类的共性的方法有:

方法 作用
int read() 从输入流中读取数据的下一个字节,并返回,到末尾就返回-1
int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组b之中
void close() 关闭输入流,并释放与输入流相关的系统资源

java.io.FileInputStream extends InputStream

构造方法

构造方法 作用
FileInputStream(String name) 创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件
FileInputStream(File file) 创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件

参数:String name(文件路径)、File file(文件对象)

2、读取文件

java程序 --> JVM --> OS --> OS调用读取数据的方法 --> 读取文件

3、字节输入流读取文件的步骤

  • 创建FileInputStream对象,构造方法中指定要读取的文件(路径名或者文件对象)
  • 使用FileInputStream对象的方法read,读取文件
  • 使用FileInputStream对象的方法close,释放资源
package cn.zhuobo.day14.streamOutput;

import java.io.FileInputStream;

import java.io.IOException;

public class Demo02FileInputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("/home/zhuobo/Desktop/a.txt");
/*int i = fis.read();
System.out.println(i);// 98
i = fis.read();
System.out.println(i);// 99
i = fis.read();
System.out.println(i);// 104*/
int i = 0;
while ((i = fis.read()) != -1) {
System.out.println(i);
}// 循环读取直到末尾,-1是末尾
}
}

4、字节输入流一次读取一个字节的原理

每次指针向后移动一个单位

5、一次读取多个字节

使用int read(byte[] b)

byte[] bytes = new byte[5];// 每次读取最多5个,但是一般定义长度为1024
int len = fis.read(bytes);// len指的是读取的有效字节个数
String str = new String(bytes);
System.out.println(len);
System.out.println(str); byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes)) != -1) {
System.out.println((new String(bytes)).trim());
}

6、文件复制练习

原文件-->读出来-->写进去-->目标文件

package cn.zhuobo.day14.streamOutput;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class FileCopy {
public static void main(String[] args) throws IOException {
File fileDes = new File("/home/zhuobo/Desktop/22.png");
FileOutputStream fos = new FileOutputStream(fileDes);
File fileSource = new File("/home/zhuobo/Desktop/dir/1.png");
FileInputStream fis = new FileInputStream(fileSource); int len = 0;
byte[] bytes = new byte[1024];
while((len = fis.read(bytes)) != -1) {
fos.write(bytes, 0, len);
} // 先关闭写的流(output)再关闭读的流(input)
fos.close();
fis.close();
}

ava.io.InputStream & java.io.FileInputStream的更多相关文章

  1. 转换流读写操作 java.io.OutputStreamWriter ,java.io.InputStreamReader

    package seday07; import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStr ...

  2. 缓冲字符流 java.io.BufferedWriter ,java.io.BufferedReader,缓冲字符输出流:PrintWriter

    package seday07; import java.io.IOException;import java.io.PrintWriter; /*** @author xingsir * 缓冲字符流 ...

  3. 对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream

    package seday06; import java.io.Serializable;import java.util.Arrays; /** * @author xingsir * 使用当前类来 ...

  4. hive运行query语句时提示错误:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.io.IOException:

    hive> select product_id, track_time from trackinfo limit 5; Total MapReduce jobs = 1 Launching Jo ...

  5. java.io.OutputStream & java.io.FileOutputStream

    java.io.OutputStream & java.io.FileOutputStream 1.Java.io.OutputStream(字节输出流) 字节输出流,这是一个抽象类,是表示输 ...

  6. java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat.2457258178644046891.8080/work/Tomcat/localhost/innovate-admin/C:/up/154884318438733213952/sys-error.log (没有那个文件或目录)

    环境: Ubuntu18 vue+elementUI 实现文件的上传 报错信息: MultipartFile.transferTo(dest) 报 FileNotFoundException java ...

  7. java io基础(java.io)

    首先流分为输入和输出流,java分为字节流和字符流 1.字节输入流io.InputStream io.InputStream是一个抽象类它实现了Closeable接口的抽象类.那么它的子类(io包下) ...

  8. 高效IO之Java IO体系(一)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括J ...

  9. 一头扎进 Java IO中-------java IO文件

    Java IO: 文件 在Java应用程序中,文件是一种常用的数据源或者存储数据的媒介.所以这一小节将会对Java中文件的使用做一个简短的概述.这篇文章不会对每一个技术细节都做出解释,而是会针对文件存 ...

随机推荐

  1. 【cf789B】Masha and geometric depression(分类讨论/暴力)

    B. Masha and geometric depression 题意 在黑板上写数列,首项是b,公比是q,超过l时就停止不写.给定m个数,遇到后跳过不写.问一共写多少个数,如果无穷个输出inf. ...

  2. JVM体系结构概述

    ClassLoader(类装载器) 负责加载class文件. class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution ...

  3. 【转】.MD语法入门

    @2019-02-13 [小记] .MD语法入门

  4. [POI2006]OKR-Periods of Words(KMP)

    题意:给定一个字符串,求它的每个前缀的的一个最长前缀,使得它重复两边后能够覆盖原串. Solution 这题显然要在KMP的next数组上做一些手脚. 对于一个前缀,我们把它重复两遍,那么这个前缀的前 ...

  5. CF983A Finite or not?(数学)

    题意:给出分母,分子和进制,要求判断该数是否为有限小数. Solution 表示并不知道怎么判断. 度娘:“一个分数在最简分数的情况下,如果它的分母只含有2和5两个质因数,这个分数就能化成有限小数.” ...

  6. Ocean的礼物(线段树单点修改)

    题目链接:http://oj.ismdeep.com/contest/Problem?id=1284&pid=0 A: Ocean的礼物 Time Limit: 5 s      Memory ...

  7. BZOJ 4562: [Haoi2016]食物链(拓扑排序)

    题面: https://www.lydsy.com/JudgeOnline/problem.php?id=4562 一句话题意:给一个DAG,求有多少条不完全相同的链,使链首入度为0,链尾出度为0. ...

  8. jquery属性操作,应用,事件,扩展extend,动画效果(二)

    一.相关知识点总结1.CSS .css()      - .css("color")  -> 获取color css值 - .css("color", & ...

  9. surfer画世界频率分布图(等高线、地点标注)

    以surfer 12版本为例: 1.下载世界地图,这里我随便提供一个范例(侵删,忘记出处了): 2.进入surfer软件,选择“MAP”——“NEW”——“BASE MAP”. 以此按照以上步骤,在弹 ...

  10. 100.Same Tree(E)

    100. same tree 100. Same Tree Given two binary trees, write a function to check if they are the same ...