JAVA学习IO操作:字节流和字符流
前言:本章具体介绍了字节流、字符流的基本使用方法,图解穿插代码实现。
IO操作
字节流
-
java.io.InputStream 输入流,主要是用来读取文件内容的。
-
java.io.OutputStream 输出流,主要是用来将内容字节写入文件的。
FileInputStream
InputStream f = new FileInputStream("D:/hello");
File f = new File("D:/hello");InputStream in = new FileInputStream(f);
FileOutputStream
OutputStream f = new FileOutputStream("D:/hello");
File f = new File("D:/hello");OutputStream fOut = new FileOutputStream(f);
字节流读写案例
读取D:/hello.txt文件中的内容再输入到文件D:/test.txt中
public class Mk {
public static void main(String[] args) throws IOException {
File file=new File("D://hello.txt");
File file1= new File("D://test.txt");
InputStream is=new FileInputStream(file);
OutputStream out=new FileOutputStream(file1);
//定义byte数组用来暂存数据
byte[] buf = new byte[1024];
//读取Is中的内容存到buf
is.read(buf);
//将buf中的内容写入out
out.write(buf);
is.close();
out.close();
}
}
字符流
FileWriter
写入文件实例
public class A {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("user.txt", true);
fw.write("你好中国1");
fw.write("你好中国2");
fw.write("你好中国3");
fw.close();
}}
FileReader
读取文件实例
这里我把内容换行了
br.ready()是判断这一行流是否为空
br.readLine()是输出一行,然后自动光标指到下一行。
public class A {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("user.txt"));
while (br.ready()) {
System.out.println(br.readLine());
}
br.close();
}}
字节流与字符流得区别
字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?
字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的
字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容
那开发中究竟用字节流好还是用字符流好呢?
在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。
如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。
本文出至:学新通
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/boutique/detail/15715
- 联系方式: luke.wu@swvq.com
- 来源链接: www.php.cn/java-article-490640.html
系列文章
更多
同类精品
更多
精彩评论
-
windows上查看nginx是否启动
PHP中文网 04-19 -
2023年最新的28道PHP面试题附答案
PHP中文网 03-27 -
docker hub 进不去怎么办
PHP中文网 03-15 -
推荐五款xml编辑工具
PHP中文网 03-04 -
navicat怎样清除注册表
PHP中文网 04-05 -
强力推荐10款好看使用的Bootstrap后台管理系统模板
PHP中文网 03-09 -
ChatGPT应用通过Axios+EventSource使用GPT3.5 API
uWydnA 03-13 -
vscode怎么调整代码大小两种方法
PHP中文网 03-11 -
navicat删除的数据能还原吗
PHP中文网 04-09 -
mysql,navicat怎么设置主键自增
PHP中文网 04-08