惊呆了,原来JavaIO如此简单【奔跑吧!JAVA】
【摘要】 前言: 群里有大佬说想让我写一篇NIO,一直也没写,但是和同事聊天也说对Java的IO不是很清晰,因此今天就写下Java的IO,先打个基础,下次写NIO,我们开始吧一、IO底层是怎么回事? 操作系统就是管家,电脑的设备就是资源,如果进程先要操作资源,必须要进行系统调用,有操作系统去处理,然后再返回给进程,这样的代理模式是不是很常见?因此app 就是你写的程序,资源就是硬盘或者其他的设备,io...
一、IO底层是怎么回事?
二、梳理类的结构
三、IO类大点兵
四、来波实例展示
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 拷贝文件
* @author 香菜
*/
public class CopyFileWithStream {
public static void main(String[] args) {
int b = 0;
String inFilePath = "D:\\wechat\\A.txt";
String outFilePath = "D:\\wechat\\B.txt";
try (FileInputStream in = new FileInputStream(inFilePath); FileOutputStream out = new FileOutputStream(outFilePath)) {
while ((b = in.read()) != -1) {
out.write(b);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("文件复制完成");
}
}
package org.pdool.iodoc;
import java.io.*;
/**
* 拷贝文件
*
* @author 香菜
*/
public class CopyFileWithBuffer {
public static void main(String[] args) throws Exception {
String inFilePath = "D:\\wechat\\A.txt";
String outFilePath = "D:\\wechat\\B.txt";
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(inFilePath));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFilePath))) {
byte[] b = new byte[1024];
int off = 0;
while ((off = bis.read(b)) > 0) {
bos.write(b, 0, off);
}
}
}
}
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
}
}
总结:
-
而Reader/Writer则是用于操作字符,增加了字符编解码等功能,适用于类似从文件中读取或者写入文本信息。本质上计算机操作的都是字节,不管是网络通信还是文件读取,Reader/Writer相当于构建了应用逻辑和原始数据之间的桥梁。 -
Buffered等带缓冲区的实现,可以避免频繁的磁盘读写,进而提高IO处理效率。 -
记住IO流的设计模式是装饰器模式,对流进行功能升级。 -
stream,reader ,buffered 三个关键词记住
【奔跑吧!JAVA】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/265241
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)