java_IO流(输入流)
* 字节输入流(InputStream):所有字节输入流的父类
* 所有子类共性方法:
* int read():从输入流中读取数据的下一个字节
* int read(byte[] b):从输入流中拂去一定数量的字节,并将其存储在缓冲区数组b中
* void close() 关闭 此输入流并释放该流 关联的所有系统资源
* java.io.FileInputStream extends InputStream
* FileInputStream:文件字节输入流
* 作用:把硬盘文件中的数据,读取到内存中使用
*
* 构造方法:
* FileInputStream(String name):
* FileInputStream(File file):
* 参数:读取文件的数据源
* String name:文件路径
* File file:文件
* 构造方法的作用:
* 1.会创建一个FileInputStream对象
* 2.会把FileInputStream对象指定构造方法中要读取的文件
* 读取数据的原理(硬盘-->内存):
* java程序-->os-->os读取数据的方法-->读取文件
*
* 字节输入流的使用步骤(重点):
* 1.创建FileInputStream对象,构造方法中绑定要读取的数据源
* 2.使用FileInputStream对象中的方法read读取文件
* 3.释放资源
*
* 字节流练习(文件复制):
*
*
*
*/
public static void main(String[] args) throws IOException {
//1.创建输入流
FileInputStream fis = new FileInputStream("D:\\1.jpg");
//2.创建输出流
FileOutputStream fos = new FileOutputStream("E:\\1.jpg");
//3.边读边写
int len = 0;
while((len = fis.read())!=-1){
//3.1写入
System.out.println(len);
}
//先关闭写,再关闭读
fos.close();
fis.close();
}
/**
* 字符流:
* 字符输入流:java.io.Reader,字符输入流的最顶层的父类,定义了共性成员方法,是抽象类
* 共性成员方法:
* int read():读取当个字符
* int read(char[] cbuf):一次性读取多个字符,将字符读入数组
* void close() 关闭该流并释放与关联的所有资源
*
* java.io.FileReader extends InptStreamReader extends Reader
* FileReader:文件字符输入流
* 作用:把硬盘文件中的数据以字符的方式读取到内存中
* 构造方法:
* FileReader(String fileName):
* FileReader(File file):
* 参数:
* String fileName:文件路径
* File file:文件
* FileReader构造方法的作用:
* 1.创建一个FileReader对象
* 2.会把FileReader对象指向我们要读取的文件
* 字符输入流步骤:
* 1.创建FileReader对象,构造方法中邦绑定要读取的数据源
* 2.使用FileReader对象中的方法read读取文件
* 3.释放资源
* 字符输出流:
* java.io.Writer:所有字符输出流的父类
* 共性成员方法:
* void write(int c):写入单个字符
* void write(char[] cbuf):写入字符数组
* abstract void write(char[] cbuf,int off,int len):写入字符数组的某一部分,off数组的开始索引,len写的字符个数
* void write(String str):写入字符串
* void write(String str,int off,int len):写入字符串中的某一部分,off开始位置,len写的个数
* void flush():刷新该流的缓冲
* void close():关闭此流,但要先刷新它
*
* java.io.FileWriter extends OutputStreamWrite extends Writer
* FileWriter:文件字符输出流:
* 作用:把内存中字符数组写入到文件中
* 构造方法:
* FileWriter(File file):根据给定的File对象构造一个FileWriter对象
* FileWriter(String fileName):根据给定的文件名构造一个FileWriter对象
* 参数:写入数据的目的地
* String FileName:文件的路径
* File file:文件
* 构造方法的作用:
* 1.会创建FileWriter对象
* 2.会根据构造方法中传递的文件/文件路径创建文件
* 3.会把FileWriter对象指向建好的文件
* 字符输出流的使用步骤(重点):
* 1.创建FileWriter对象,构造方法中绑定要写入数据的目的地
* 2.使用FileWriter中的write把数据写入到内存缓冲区中(字符转换为字节的过程)
* 3.使用FileWriter中的方法flush把内存缓冲去中的数据刷新到文件中
* 4.释放资源(会先把内存缓冲区中的数据刷新到文件中)
* 写数据的其他方法:
* void write(char[] cbar):写入字符数组
* abstract void write(char[] cbuf,int off,int len):写入字符串数组的某一部分,off开始,len个数
* void write(String str):写入字符串
* void write(String str,int off,int len):写入字符串的某一部分,off字符串的开始索引,len写的字符个数
* 续写和换行:
* 续写:使用两个参数的构造方法FileWriter(String fileName, boolean append)
* 换行:
* windows:\r\n
* linux:/n
* mac:/r
*
* JDK1.7前:使用try catch finally 处理流中的异常
* 格式:
* try{
* 可能出现异常代码
* }catch{
* 异常的处理逻辑
* }finally{
* 一定会执行代码
* }
* JDK7的新特性:
* 在try的后边可以增加一个(),在括号中可以定义流对象
* 那么这个流对象的作用域就在try中有效
* try中的代码执行完毕自动把流对象释放,不用finally
* 格式:
* try(定义流对象,可以定义多个){
* 可能出现异常代码
* }catch(异常类变量 变量名){
* 异常的处理逻辑
* }
*
* JDK9的新特性:
* try的前边可以定义流对象
* 在try后边()中可以直接引入流对象的名称(变量名)
* 在try代码执行完毕后,流对象也可以释放,不用写finally
* 格式:
* A a = new a();
* B b = new b();
* try(a;b){
* 可能出现异常代码
* }catch{
* 处理方式
* }
*
*/
}
java_IO流(输入流)的更多相关文章
- Java_IO流_File类配合使用(其中用到了递归)
第一:Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.以下对Java File文件操作以及常用方法进行简单介绍 案例1:遍历出指定目录下的文件夹,并输出文件名 stat ...
- java_IO流之 NIO
NIO 定义 即新IO,在JDK1.4的java.nio.*包中引入,其目的在于提高速度. 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生 ...
- java_IO流
IO流概述及分类 Reader InputStream OutputStream Writer都是Object的直接子类 字节流: 字节输入流 InputStream(抽象类) |---File ...
- Java_IO流_抽象类
一. 概念 流动,从一端流向另一端,源头与目的地 以程序为中心,程序与 数组/文件/网络连接/数据库, 二. io流分类 流向:输入流与输出流 数据 :字节楼:二进制,所有文件都可以操作,包括 ...
- Java_IO流输入输出
第三章 输入输出 一.I/O Input/Output 二.File 用途:对文件和目录进行常规操作(除文件读写操作外). 方法:exists():判断文件或目录是否存在 isFile():判断是否是 ...
- java_IO流(输出流)
** * io流: * 输入流:硬盘输入到内存 字节/字符输入流 * 输出流:内存输出到硬盘 字节/字符输入流 * 字节流:一切数据都是字节存储(二进制) * 字节输出流(OutputStream): ...
- java_IO流小结
字符流和字节流的主要区别: 1.字节流读取的时候,读到一个字节就返回一个字节: 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时.先去查指定的编码表,将 ...
- Java_IO流实验
实验题目链接:Java第09次实验(IO流) 0. 字节流与二进制文件 我的代码 package experiment.io; import java.io.DataInputStream; impo ...
- java_IO流读取本地文件
package com.ht.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoun ...
随机推荐
- [JZOJ 100025] 棋盘
题意:求剩余面积. 首先吐槽题号:究竟\(JZOJ\)有多少未公开的题目... 思路: 简单的一批啊... 不知道为啥上午不过下午就过了?? 难道是海螺姑娘光顾我?? 多说了都是灵异故事... 其实就 ...
- 知识整理:字符串hash
字符串hash唯一用途是快速判断两字符串是否相等,但存在极小概率假阳性(本来不相等,但算法返回相等). 根本思想是把一个字符串转换为一个整数,要求相同的字符串,对应的这个整数相同,不同的字符串,对应的 ...
- 中断控制及basepri 与 basepri_max
1.总开关 每个CPU有一个中断总开关.通过CPU中断控制寄存器实现.Cortex-M的中断控制寄存器包括:FAULTMASK.PRIMASK.BASEPRI.BASEPRI_MAX.总开关的本质是变 ...
- 20140315 模板类pair的用法 2、visual 2010调整代码格式是ctrl+k+
1.模板类pair的用法 包含头文件#include<utility> http://blog.csdn.net/laixingjun/article/details/9005200 ...
- Day 11:函数装饰器
在说装饰器前,先说一个东西,再Python里,有一个 一切皆对象,一切皆变量. 例: def hello(name="sunjinyao"): return "hi &q ...
- Function(高阶函数式编程)
Function一个可以进行高阶函数式编程的模块. chain def chain[a](fs: Seq[(a) ? a]): (a) ? a 把一些列的方法串起来,挨个执行,每个方法的结果,回作为下 ...
- Hadoop安装成功之后,访问不了web界面的50070端口怎么解决?
Hadoop安装成功之后,访问不了web界面的50070端口 先查看端口是否启用 [hadoop@s128 sbin]$ netstat -ano |grep 50070 然后查看防火墙的状态,是否关 ...
- uoj139 【UER #4】被删除的黑白树
题目 不难发现有一个暴力\(dp\) 设\(dp[x][l]\)表示\(x\)点子树内所有叶子节点到\(x\)的路径上都有\(l\)和黑点时最多能染多个黑点 转移就是 \[dp[x][l]=\max( ...
- Codeforces Round #525 E - Ehab and a component choosing problem
题目大意: 在一棵树中 选出k个联通块 使得 这k个联通块的点权总和 / k 最大 并且这k个联通块不相互覆盖(即一个点只能属于一个联通块) 如果有多种方案,找到k最大的那种 给定n 有n个点 给定n ...
- Benchmark of Large-scale Unconstrained Face Recognition-blufr 算法的理解
Many efforts have been made in recent years to tackle the unconstrained face recognition challenge. ...