io流(io流的引入与文件字节流)
io流的引入与文件字节流
io流:就是一根吸管,插入后,可以操作目标文件
io流的分类:
按方向:输入,输出
按大小:字节,字符
按处理方式:
- 处理流:“管套着管” --- 流结合流
- 节点流:直接跟目标文件接触的流
文件字节流
- FileInputStream(输入)
先将文件中的内容导入到程序中来
一个字符等于两个字节,所以是16位
package com.bjsxt.test01; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; public class Test {
public static void main(String[] args) throws IOException {
//文件----->程序 //1.确定一个文件
File f = new File("D:\\a.txt");//程序连接文件
//2.将“一根管”插入源文件中去
FileInputStream fis = new FileInputStream(f);
//System.out.println(fis.available());//对文件大小进行评估--------15字节
//3.开始“动作”
byte[] b = new byte[8];//定义缓冲数组,数组长度为8,下面就是8个8个读字节
int n = fis.read(b);//返回数组中占用的数量 这里的read方法可以使用数组传参,不传参就是一个一个读字节,传数组长度为8的数组就是8个8个读字节
while(n!=-1){
//System.out.println(n);
for (int i = 0; i <=n-1; i++) {
System.out.println(b[i]);//这个循环用来查看数组里面的元素
}
n=fis.read(b);
}
//4.关闭流
fis.close();
}
}
- FileOutStream(输出)
package com.bjsxt.test01; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class Test3 {
public static void main(String[] args) throws IOException {
//程序--->文件 //1.确定目标文件
File f = new File("D:\\a\\b.txt");
//2.将一个吸管插入目标文件中
FileOutputStream fos = new FileOutputStream(f,true);//加true就是在原来的内容上进行追加,不加就是覆盖原来的内容
//3.给一个字符串
String str=" 附加:abc你好";
//4.开始动作
byte[] bytes = str.getBytes();
/*
for (byte b : bytes) {
fos.write(b);
} */
fos.write(bytes);//这个可以代替上面注释的代码,而且更快,上面哪个是一个一个往外输
//5.关闭流
fos.close();
}
}
- FileInputStream,FileOutStream(文件的复制)
- 效率低的方法
package com.bjsxt.test02; import java.io.*; public class Test01 {
public static void main(String[] args) throws IOException {
//1.确定源文件
File f1 = new File("D:\\a\\b.txt");
//2.确定目标文件
File f2 = new File("D:\\a\\a.txt");
//3.将一根管插入源文件中
FileInputStream fis = new FileInputStream(f1);
//4.将一根管插入目标文件中
FileOutputStream fos = new FileOutputStream(f2);
//5.开始动作
int n = fis.read();
while(n!=-1){//-1就是结尾
fos.write(n);
n=fis.read();
}
//6.关闭流
fos.close();
fis.close();
}
}
效率高的方法
注意:只往出写下标为[0,len)的数组,这是数组中的有效数组,不写无效的元素
package com.bjsxt.test02; import java.io.*; public class Test02 {
public static void main(String[] args) throws IOException {
//1.确定源文件
File f1 = new File("D:\\a\\b.txt");
//2.确定目标文件
File f2 = new File("D:\\a\\a.txt");
//3.将一根管插入源文件中
FileInputStream fis = new FileInputStream(f1);
//4.将一根管插入目标文件中
FileOutputStream fos = new FileOutputStream(f2);
//5.开始动作
byte[] b = new byte[6];
int len = fis.read(b);//len是数组中占用的有效长度
while(len!=-1){
fos.write(b,0,len);//把长度为6的数组中下标【0,len)这个位置的写出去
len = fis.read(b);
}
//6.关闭流
fos.close();
fis.close();
}
}
io流(io流的引入与文件字节流)的更多相关文章
- Java IO之字符流和文件
前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
- IO库----IO类,文件输入输出,string流
一.IO类 1.IO库类型和头文件表: 头文件 类型 iostream istream,wistream 从流读取数据 ostream,wostream 向流写入数据 iostream,wiostre ...
- 流Stream 文件File 流IO
Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...
- File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?
重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
- io流-文件流\节点流
FileOutputStream类(jdk1.0) 描述 java.io.FileOutputStream 类是文件字节输出流,用于将数据写入到文件中. 构造方法 //构造方法 FileOutputS ...
- 文件流 io.StringIo()
import io f = io.StringIO() f.write("") f.getvalue() f.close 二进制 f = io.Bytesio()
- IO异常--缓冲流--转换流--序列化流( IO流2 )
1.IO异常的处理 JDK7前处理:使用try...catch...finally 代码块,处理异常部分 // 声明变量 FileWriter fw = null; try { //创建流对象 fw ...
随机推荐
- 可重入锁ReentrantLock解析
说到可重入锁,先从AQS的ConditionObject说起,AQS的内部类ConditionObject是构建显示锁条件队列的基础.之前AQS的解析没有说这个内部类,这里和ReentrantLock ...
- 深入理解gradle中的task
目录 简介 定义task tasks 集合类 Task 之间的依赖 定义task之间的顺序 给task一些描述 task的条件执行 task rule Finalizer tasks 总结 深入理解g ...
- 使用SQL-Server分区表功能提高数据库的读写性能
首先祝大家新年快乐,身体健康,万事如意. 一般来说一个系统最先出现瓶颈的点很可能是数据库.比如我们的生产系统并发量很高在跑一段时间后,数据库中某些表的数据量会越来越大.海量的数据会严重影响数据库的读写 ...
- Promise.allSettled & Promise.all & Promise.race & Promise.any All In One
Promise.allSettled & Promise.all & Promise.race & Promise.any All In One new Promise(), ...
- JWT All In One
JWT All In One OAuth 2.0 JWT JSON Web Tokens https://jwt.io refs https://www.cnblogs.com/xgqfrms/tag ...
- PM2 & nodemon
PM2 & nodemon node.js server tools PM2 https://pm2.keymetrics.io/ https://pm2.io/ $ yarn global ...
- html tag filter in js
html tag filter in js const html = `可当天预订,必须21时15分之前下单,要求必须<font color=green><b>60</b ...
- div & drop
div & drop uplaod file & prevent dropleave https://www.runoob.com/jsref/event-ondrop.html ht ...
- 人物传记:Mila Fletcher:如何勤于思考抓住关键?
Mila Fletcher于2007年毕业于耶鲁大学,她是一名真正意义上的法学博士,在校期间获得了马歇尔奖学金,毕业后曾在美国多家知名律师事务所任职,目前就职于星盟全球投资公司,专注于帮助公司和客户提 ...
- python 第三方库paramiko
目录 介绍 三种常用方式 使用密码进行登录 使用密钥免密码登录 SFTP 传输文件 terminal demo 介绍 paramiko是什么可以参考其他人的博客或文章,这里不再赘述,直入正题. 本次测 ...