IO流的简单实现
学习目标:
熟练掌握IO流的基本实现方式
例题:
字节输出流
代码如下:
public class OutputStreamDemo01 {
public static void main(String[] args) throws IOException {
//1):创建源或者目标对象
File file = new File("填你要写入文件的绝对路劲/相对路径,后面都一样,不再提示,例如:G:\\workspace\\test.txt");
//2):创建IO流对象
OutputStream outputStream = new FileOutputStream(file);
//3):具体的IO操作
outputStream.write("12".getBytes()); // 写入一个字节数组
outputStream.write(122); // 写入一个整形数字,会被转化成Unicode码
outputStream.write(new byte[]{'a', 'g', 'a'}); // 传入字节数组
//4):关闭资源
outputStream.close();
}
}
运行结果:
12zaga
字节输入流
代码如下:
public class InputStreamDemo01 {
public static void main(String[] args) throws IOException {
//1):创建源或者目标对象
File file = new File("G:\\aaa.txt");
//2):创建IO流对象
InputStream inputStream = new FileInputStream(file);
//3):具体的IO操作
byte[] buffer = new byte[(int) file.length()];
int len = 0;
while((len = inputStream.read(buffer)) != -1) {
String str = new String(buffer, 0, len);
System.out.println("str = " + str);
}
//4):释放资源
inputStream.close();
}
}
运行结果:
"C:\Program Files\Java\jdk-11.0.9\bin\java.exe" "-"
str = ZafdsZAfaF
Process finished with exit code 0
字符输入流
代码如下:
public class FileReaderDemo01 {
public static void main(String[] args) throws IOException {
// 1)创建file对象,确定要操作的文件
File file = new File("G:\\aaa.txt");
// 2)获取字符流
// FileleReader reader = new FileReader(file); (直接获取的方式)
// 桥接的方式
InputStream in = new FileInputStream(file);
Reader reader = new InputStreamReader(in);
char[] buffer = new char[1024];
// 如果文件长度小于buffer数组长度,则第一次读取len长度为buffer的长度,第二次读取为-1
// 如果文件长度大于buffer数组长度,则第一次读取len长度为buffer的长度,第二次读取继续判断剩余文件长度,直到返回-1
int len = reader.read(buffer, 0, buffer.length);
while (len > 0) {
System.out.println(Arrays.toString(Arrays.copyOf(buffer, len)));
System.out.println("readLength: " + len);
len = reader.read(buffer, 0, buffer.length);
}
// 3)释放资源
reader.close();
}
}
运行结果:
"C:\Program Files\Java\jdk-11.0.9\bin\java.exe"
[Z, a, f, d, s, Z, A, f, a, F]
readLength: 10
Process finished with exit code 0
字符输出流
代码如下:
public class FileWriterDemo01 {
public static void main(String[] args) throws IOException {
//1):创建源或者目标对象
File file = new File("G:\\aaa.txt");
//2):创建IO流对象
FileWriter out = new FileWriter(file);
//3):具体的IO操作
out.write('光');//输出A
out.write('头');//输出B
out.write('强');//输出C
out.write(':');//输出D
out.write(' ');//输出D
String str = "众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。";
out.write(str.toCharArray());
out.write(str);//String的本质就是char[]
//4):关闭资源(勿忘)
out.close();
}
}
运行结果:
光头强: 众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。
# 总结:
以上就是IO流的简单实现,代码仅供参考。
IO流的简单实现的更多相关文章
- Java开发笔记(九十一)IO流处理简单的数据压缩
前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可 ...
- AJPFX关于IO流的简单总结
IO流的分类:1.根据流的数据对象来分:高端流:所有的内存中的流都是高端流,比如:InputStreamReader 低端流:所有的外界设备中的流都是低端流,比如InputStream,Output ...
- JAVA IO流的简单总结+收集日志异常信息
1.字节流: IuputStream 所有字节输出流的超类 . 抽象类 ---- FileInputStream ---- BufferedInputStream:提供数据的读取效率,拓展方法(内部维 ...
- IO流实现简单的文件的剪切
思路: 判断 即将 复制的文件是文件夹还是文件 遍历需要复制的源文件夹 如果是文件夹,就通过流创建一个同样的子文件夹 如果是文件,就复制过去 接下来上代码 public class Demo1 { p ...
- IO流2
一.IO流简介及分类 1.IO流简介 IO流: 简单理解数据从一个地方流向另外一个地方 2.IO流分类 按照数据流动的方向 分为 输入流和输出流 按照数据流动的单位分为 字节流和字符流 二.四大 ...
- java基础之IO流及递归理解
一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...
- java的IO流初探
DEMO代码: /* * 文件IO流的简单演示 */ package com.IO; import java.io.*; public class Demo_IO_1 { /** * @param a ...
- 什么是IO流
先看一段百度上的解释: 当然:如果你看不懂,那么你只需要记住下面3句话. 1. (1).我们知道,每个人家里喝的水都是从自来水厂来的,自来水厂的水又是从水源地来的, (2).水是通过水管来的. (3) ...
- java 20 - 4 IO流概述和一个简单例子解析
IO流的分类: 流向: 输入流 读取数据 输出流 写出数据 数据类型: 字节流 字节输入流 读取数据 InputStream 字节输出流 写出数据 OutputStream 字符流 字符 ...
随机推荐
- Eureka单机&集群配置
目录 Eureka是什么 自我保护机制 版本选择 服务搭建 创建项目 导入GAV坐标 application启动类添加注解 配置yml 启动项目 集群配置 修改上面的yml 打jar包到另外一台电脑O ...
- RxJS中高阶操作符的全面讲解:switchMap,mergeMap,concatMap,exhaustMap
RxJS中高阶映射操作符的全面讲解:switchMap, mergeMap, concatMap (and exhaustMap) 原文链接:https://blog.angular-universi ...
- PC微信聊天记录数据迁移恢复
PC微信聊天记录数据迁移恢复 本文章仅仅是PC微信聊天记录从一台电脑迁移到另外一台电脑恢复办法,主要适用于更换电脑,或重装系统,用户想保存PC微信中数据和文件. 1.查看微信记录的保存文件夹 设置 ...
- ffmpeg修改视频文件的分辨率
在本文中,我们将展示如何调整任何视频文件的大小. 这种方法是在Linux系统(几乎任何发行版)中调整视频文件大小的最佳方法之一,也是Windows和Mac用户的绝佳替代方案. 更改视频文件的分辨率将是 ...
- 面试官:Redis集群有哪些方式,Leader选举又是什么原理呢?
哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 作为一名Java程序员,Redi ...
- Gin 09 HTTP 重定向
gin http 重定向有两种方法,重写url 和 不重写的跳转.两种方法,gin 通过两个内置方法实现: demo package main import ( "github.com/gi ...
- MySQL between and 边界测试
看到有一些博客说 between and 有不含边界的情况,于是测试了一把,记录如下.先说结论:between and 不存在不含边界的情况 1. between and 是包含边界的 id betw ...
- Mysql等保部分加固
一.等保要求:操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换. 实施步骤: 启用口令复杂审核(5.6.6版本以上,才有此模块功能,需要重启mysql). 查看 ...
- 在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)
准备工作 这里假设,你已经在 k8s 上部署好了基于 Citus 扩展的分布式 PostgreSQL 集群. 查看 Citus 集群(kubectl get po -n citus),1 个 Coor ...
- 07模块化设计之top_down
一设计功能:(一)用两个分频模块,实现16分频,且让输入a 和b在16个系统时钟内,相与一次. (二)模块化设计思想(结构化思维) 拆分,即把一个系统划分成多个功能模块,控制模块,组合模块.然后从功能 ...