自学JAVA-11:IO流
1、流按照方向分:输入流和输出流。(以内存做为参照物)
当从数据源中,将数据读取到内存中时,叫做输入流也叫读取流。
当将内存中的数据写入到数据源时,叫做输出流也叫写入流。
2、流按照传输的内容分,:字节流、字符流和对象流。
无论是哪一种流底层部分都是以字节方式传输。所以,其本质都是字节流。但是为了方便程序员更好的操作字符数据和对象数据。所以,在字节流基础上做了一层包装形成了字符流和对象流。
字节流:抽象父类是InputStream和OutputStream
字符流:抽象父类是Reader和Writer
3、流操作的步骤:
①建立流
②操作流
③关闭流
操作文件时,如果文件不存在,那么读取流会抛出未找到文件异常,而写入流会创建新文件。
流操作的主要目的:数据的转换。
4、序列化:
当需要对对象进行传输时,由于对象中数据很庞大,无法直接传输。那么在传输之前,需要将对象打散成二进制的序列,以便传输,这个过程称为序列化过程;到达目的地后,又要将二进制序列还原成对象,这个过程称为反序列化过程。
所有需要实现对象序列化的对象必须首先实现Serializable接口。
java.io.NotSerializableException:当需要传输对象时,而该对象所在的类,没有实现序列化接口时抛出。
transient 关键字:属性的修饰符。表示在传输对象时,被transizent修饰的属性值不做传输。
字节流:
/** 读取流 */
public void readData() {
InputStream in = null;
try {
// 建立文件读取字节流
in = new FileInputStream("//读取文件地址");
int data = 0;
// read()一次读取一个字节,返回读取的数据,当返回值为-1时,表示文件读取完毕
while ((data = in.read()) != -1) {
System.out.println(data);
}
byte[] by = new byte[1024];
int len = 0;
// 将流中的数据读取到字节数组中,返回当前读取的字节数。读取完毕,返回-1
while ((len = in.read(by)) != -1) {
System.out.println(len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/** 写入流 */
public void writeData(String str) {
OutputStream out = null;
try {
// true表示追加方式写入数据
out = new FileOutputStream("//写入地址", true);
// 将字符串转换成字节数组
out.write(str.getBytes());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**复制文件*/
public void copyFile() {
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream("//读取地址");
out = new FileOutputStream("//写入地址");
byte[] by = new byte[1024];
int len = 0;
while ((len = in.read(by)) != -1) {
//读取几个字节,就写入几个字节
out.write(by,0,len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
字符流:
/**读取*/
public void readData() {
Reader r = null;
BufferedReader br = null;
try {
//建立文件读取流
r = new FileReader("//读取地址");
//套接流,在一个流的基础上,再套接一个流,也称为高级流
br = new BufferedReader(r);
String str = null;
//读取一行数据,以\n或回车作为结束符
while ((str = br.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
r.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**写入*/
public void writerData(String str){
Writer w =null;
try {
w=new FileWriter("//写入地址", true);
w.write(str);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
w.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
转载于:https://www.cnblogs.com/LYL6868/p/8976075.html
自学JAVA-11:IO流相关推荐
- Java基础—IO流
第一讲 IO概述 1. 流的概念 IO流即InputOutput的缩写,在Java中IO流用来处理设备之间的数据传输,Java对数据的操作是通过IO流的方式, 我们可以把IO流抽象的当作一根管道, ...
- Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)
Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...
- 黑马程序员-JAVA基础-IO流之字符流和字符流缓冲区
------- android培训.java培训.期待与您交流!------- Java 的IO 流 是实现输入和输出的基础,Java 中把不同的输入.输出源抽象表述为"流" (S ...
- java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...
- 解决关于java的IO流进行文件拷贝时拒绝访问的问题
解决关于java的IO流进行文件拷贝时拒绝访问的问题 1.在学习java IO流的时候,想进行文件的自动拷贝功能,我的代码是在idea中编写的,编写没有报红,但是运行时却出现了java.io.File ...
- Java中IO流,输入输出流概述与总结(转载自别先生文章)
Java中IO流,输入输出流概述与总结 总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...
- Java入门——IO流
一.File类的使用 1.1 File类的实例化 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File 能新建.删除.重命名文件和目录,但File 不能访问文件内容本身. ...
- JAVA基础 IO流技术学习笔记
目录 一.IO 流技术介绍 1.1 什么是IO? 1.2 流的概念 1.3 数据源 1.3.1 什么是数据源? 1.3.2数据源的分类 二.第一个简单的IO流程序 三.IO流经典写法(适用于任何 ...
- java数据通道抽象为流_【java】IO流
对于java的IO流的理解很长时间来都是很乱,包括学习其他的语言对这一块知识也都算是一个盲点.更多的时候一提到读取保存数据就是使用数据库.这一次学习了IO流,自己又解决了一个很大的盲点. IO流为我们 ...
- 第15章-输入/输出 --- 理解Java的IO流
(一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...
最新文章
- CodeForces 595A
- ViewPager+Fragment实现TabHost(可复用的类)
- centos7.3安装nodejs
- java中哲学家就餐死锁_哲学家就餐问题与死锁总结
- Java高级语法笔记-语法支持的异常
- CentOS各个版本镜像下载地址
- java基础知识整理(精简)
- JAVA-数据类型、变量、常量
- 账龄分析表excel模板_经理都头疼的财务分析表!新手会计用10套模板半时搞定,厉害...
- Three.js学习笔记①---搭建本地three.js官网(来自B站老陈视频)
- uva 11137 Ingenuous Cubrency
- 艾伦·凯与Smalltalk语言
- 石化行业工作调度,如何选择合适的防爆对讲机?
- LeetCode题目:1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
- Axure RP 新闻标题链接制作
- Towards Spatio-Temporal Aware Traffic Time Series Forecasting
- 深度强化学习+启发人类的决策智能,专访一家有愿景的中国企业「启元世界」... 1
- 最长情的告白就是陪伴【Python七夕祝福】——那些浪漫的开始
- 【机器视觉基础知识整理】
- 工银亚洲汇款手续费记录(x5)
热门文章
- inDesign教程,如何创建和编辑页面?
- 如何在 FaceTime 通话中共享您的屏幕?
- 如何在 Mac 上下载 macOS Monterey public beta 6?
- 如何在 iPhone、iPad、Mac 和 PC 上设置 iCloud 照片共享?
- CleanMyMac v4.10.1支持Monterey 12.x
- Mac的「预览」程序如何旋转图片
- 苹果Mac开启root用户及切换到root用户的方法
- 找出数列中个数大于总数一半的元素(编程之美2.3)
- 网络黑客节庆狂欢 趋势科技见招拆招
- Check Point截获JavaScript文件隐形攻击