Java IO(五)字节流 FileInputStream 和 FileOutputStream
Java IO(五)字节流 FileInputStream 和 FileOutputStream
一、介绍
字节流 InputStream 和 OutputStream 是字节输入流和字节输出流的超类(父类)。FileInputStream 和 FileOutputStream 是字节流用于操作文件的子类。
(一)、FileInputStream
FileInputStream 是文件字节输入流,继承自 InputStream,通常,我们使用FileInputStream从某个文件中获得输入字节。
(二)、FileOutputStream
FileOutputStream 是文件字节输出流,继承自 OutputStream,通常,我们使用 FileOutputStream 将数据写入 File 或者 FileDescriptor 的输出流。
二、构造方法
(一)、FileInputStream构造方法
(二)、FileOutputStream构造方法
三、常用API
(一)、FileInputStream常用API
(二)、FileOutputStream常用API
四、实例
(一)、单个字节读写数据
public static void main(String[] args) {
File file = new File("test.txt");
write(file, 'A');
char r = read(file);
System.out.println(r);
} // 写入单个字节数据
public static void write(File file,int b) {
FileOutputStream fos = null;
try {
// 追加模式默认为 false ,即数据不续写到文件中
fos = new FileOutputStream(file);
fos.write(b);
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if (fos != null) {
fos.close();
}
}catch(Exception e) {
e.printStackTrace();
}
}
} // 读取单个字节数据
public static char read(File file) {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
return (char)fis.read();
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (fis != null) {
fis.close();
}
}catch(Exception e) {
e.printStackTrace();
}
}
return 0;
}
(二)、字节数组读取数据
public static void main(String[] args) {
write();
read();
} public static void write() {
FileOutputStream fos = null;
File file = new File("test.txt");
byte[] buffer = "abcdefghijklmnopqrstuvwxyz".getBytes();
try {
// 指定追加模式为true
fos = new FileOutputStream(file, true);
// 以字节数组写入
fos.write(buffer);
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if (fos != null) {
fos.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}
} //读取字节数组数据
public static void read() {
File file = new File("test.txt");
FileInputStream fis = null;
byte[] buffer = new byte[10];
int len = 0;
try {
fis = new FileInputStream(file);
while((len = fis.read(buffer)) != -1) {
fis.read(buffer, 0, len);
System.out.println(new String(buffer));
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if (fis != null) {
fis.close();
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
Java IO(五)字节流 FileInputStream 和 FileOutputStream的更多相关文章
- Java IO: 其他字节流(上)
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackInputStream,SequenceInputS ...
- java IO(五):字节流、字符流的选择规律
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- [Java IO]02_字节流
概要 字节流有两个核心抽象类:InputStream 和 OutputStream.所有的字节流类都继承自这两个抽象类. InputStream 负责输入,OutputStream 负责输出. 字节流 ...
- Java IO之字节流
Java中的输入是指从数据源等读到Java程序中,这里的数据源可以是文件,内存或网络连接,输出则是指从Java程序中写到目的地. 输入输出流可以分为以下几种类型(暂时不考虑File类) 类名 中文名 ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- Java IO流-字节流
2017-11-05 17:48:17 Java中的IO流按数据类型分类分为两种,一是字节流,二是字符流.字符流的出现是为了简化文本数据的读入和写出操作. 如果操作的文件是文本文件,那么使用字符流会大 ...
- Java—IO流 字节流
IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络…),即是将数据源读入到程序的通信通 ...
- java——io、字节流缓冲区拷贝文件、字节缓冲流
使用try catch finally关闭文件流: 写入文件: import java.io.*; public class exp{ public static void main(String[] ...
- java IO流——字节流
字节流主要操作byte类型数据,以byte数组为准,主要操作类有InputStream(字节输入流).OutputSteam(字节输出流)由于IputStream和OutputStream都是抽象类, ...
随机推荐
- RF(控制台及日志输出中文乱码)
1.查看 ride 版本,我这里是 RIDE 1.7.4.1 running on Python 3.6.0. 2.修改文件 D:\python3.6\Lib\site-packages\roboti ...
- .NET Core 反编译dll源码查看
一.可以通过JetBrains dotPeek进行反编译 二.可以通过.NET Reflector和VS自带的反编译工具查看
- 07 模型层 orm相关查询 F查询Q查询 django开启事务
一.Django终端打印SQL语句 如果你想知道你对数据库进行操作时,Django内部到底是怎么执行它的sql语句时可以加下面的配置来查看 在Django项目的settings.py文件中,在最后复制 ...
- uniapp 踩坑
获取数据 可在 onLoad 生命周期中获取数据,接收一个参数 option 为上个页面传递的参数. 点击事件tap代替click 两者都会在点击时触发,但是在web手机端,clikc会有300ms延 ...
- VM虚拟机手动配置IP地址
1.查看虚拟机的网关 编辑-->虚拟网络编辑器 VMnet8 NAT模式-->NAT设置-->网关IP 2.设置IP地址 系统-->首选项-->网络连接 system e ...
- 正则表达式在java中的用法
/** * 测试正则表达式的基本用法 Pattern 和 Matcher * @author 小帆敲代码 * */public class Demo01 { public static void m ...
- [hdu5313]二分图性质,dp
题意:给定二分图,求添加的最多边数,使得添加之后还是二分图 思路:如果原图可以分成X,Y两个点集,那么边数最多为|X||Y|条.由于|X|+|Y|==n,所以需要使|X|与|Y|尽量接近.先对原图进行 ...
- JS理论:编码习惯
1.声明变量,你只会var吗?那你真的是JS小鲜肉 如果要声明3个变量,你要var 三下吗? 不用: let [a,b,c] = ['name',18,'ddd'] console.log(a,b,c ...
- js 控制窗口跳转
使用iframe 或者使用子窗口时,session 失效时是浏览器地址转换 相关js代码:if(top!=self){ if(top.location != self.location) top.lo ...
- Docker之docker log详解
1.显示所有log docker logs [OPTIONS] <CONTAINER> #显示某个容器的所有log docker-compose logs #显示启动的所有容器的lo ...