IO学习笔记
IO
File
概述

构造方法

代码实现:
public class FileDemo001 {
public static void main(String[] args) {
File f1 = new File("D:\\file\\file.txt");
System.out.println(f1);
File f2 = new File("D:\\file","file.txt");
System.out.println(f2);
File f3 = new File("D:\\file");
File f4 = new File(f3,"file.txt");
System.out.println(f4);
}
}
结果:
D:\file\file.txt
D:\file\file.txt
D:\file\file.txt
File类创建功能

代码实现:
public class FileDemo002 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:\\file\\java.txt");
System.out.println(f1.createNewFile());
File f2 = new File("D:\\file\\javac");
System.out.println(f2.mkdir());
File f3 = new File("D:\\file\\javase\\io");
System.out.println(f3.mkdirs());
File f4 = new File("D:\\file\\javac.txt");
//要根据调用的方法来判断创建的是什么类型文件
//System.out.println(f4.mkdir());//java.txt文件夹
System.out.println(f4.createNewFile());//java.txt
}
}
结果:
true
true
true
true
File类判断与获取功能

代码实现:
public class FileDemo003 {
public static void main(String[] args) {
File f1 = new File("D:\\file\\java.txt");
System.out.println(f1.isDirectory());
System.out.println(f1.exists());
System.out.println(f1.isFile());
System.out.println(f1.getAbsolutePath());
System.out.println(f1.getName());
System.out.println(f1.getPath());
System.out.println("========分隔符======");
File f2 = new File("D:\\file");
String[] list = f2.list();
for (String s : list) {
System.out.println(s);
}
System.out.println("========分隔符======");
File[] files = f2.listFiles();
for (File f : files) {
System.out.println(f);
}
}
}
结果:
false
true
true
D:\file\java.txt
java.txt
D:\file\java.txt
========分隔符======
file.txt
java.txt
javac
javac.txt
javase
========分隔符======
D:\file\file.txt
D:\file\java.txt
D:\file\javac
D:\file\javac.txt
D:\file\javase
IO流
概述



字节流写数据


使用字节输出流写数据的步骤:

代码实现:
public class FileOutputStreamDemo001 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("基础语法\\fos.txt");
fos.write(97);
//关闭资源
fos.close();
}
}
这里涉及到了资源关闭问题,附上链接
字节流写数据的几种方法·

代码实现:
public class FileOutputStreamDemo002 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream(new File("基础语法\\fos.txt"));
//第一种
fos.write(55);
fos.write(56);
fos.write(57);
fos.write(58);
//第二种
byte[] bys = {55,56,57,58};
fos.write(bys);
//第三种
byte[] b = "abcde".getBytes();
fos.write(b,0,5);
}
}
拓展两个小问题:


字节流读数据
一次读一个字节

代码实现:
public class FileIntputStreamDemo001 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("基础语法\\fos.txt");;
int by;
while((by=fis.read())!=-1){
System.out.print((char)by);
}
fis.close();
}
}
结果:
abcde
Process finished with exit code 0
案例复制文本文件


代码实现:

一次读一个字节数组数据
代码实现:
public class FileIntputStreamDemo002 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("基础语法\\fos.txt");
byte[] bys = new byte[1024];
int len = 0;
while((len = fis.read(bys))!=-1){
System.out.println(new String(bys,0,len));
}
fis.close();
}
}
结果:
abcde
efghf
案例:复制图片


字节缓冲流


案例:复制视频

代码实现:
字符流
为什么出现字符流

字符流写数据的几种方式

public class OutputStreamWriterDemo001 {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("基础语法\\osw.txt"));
osw.write(97);
osw.flush();//刷新
char[] ch = {'a','b','c','d','e'};
osw.write(ch);
osw.write(ch,0,4);
osw.write("abcde");
osw.write("abcde",0,"abcde".length());
osw.close();
}
}
字符流读数据

代码实现:
public class OutputStreamWriterDemo002 {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("基础语法\\isr.txt"));
int ch;
while ((ch = isr.read())!= -1){
System.out.print((char)ch);
}
byte[] bys = new byte[1024];
int len;
while ((len = isr.read())!= -1){
System.out.print(new String(bys,0,len));
}
}
}
案例:复制java文件


代码改进:


字符缓冲流

代码实现:

**案例:复制java文件***


特有功能

案例:复制java文件

IO学习笔记的更多相关文章
- Java IO学习笔记:概念与原理
Java IO学习笔记:概念与原理 一.概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...
- Java IO学习笔记总结
Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- Java IO学习笔记一
Java IO学习笔记一 File File是文件和目录路径名的抽象表示形式,总的来说就是java创建删除文件目录的一个类库,但是作用不仅仅于此,详细见官方文档 构造函数 File(File pare ...
- nodejs的socket.io学习笔记
socket.io学习笔记 1.服务器信息传输: 2.不分组,数据传输: 3.分组数据传输: 4.Socket.io难点大放送(暂时没有搞定): 服务器信息传输 1. // send to curre ...
- 阻塞 io 非阻塞 io 学习笔记
阻塞 io 非阻塞 io 学习笔记
- Java IO学习笔记一:为什么带Buffer的比不带Buffer的快
作者:Grey 原文地址:Java IO学习笔记一:为什么带Buffer的比不带Buffer的快 Java中为什么BufferedReader,BufferedWriter要比FileReader 和 ...
- Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer
作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...
- Java IO学习笔记三:MMAP与RandomAccessFile
作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和Fil ...
随机推荐
- 【面试题】Vue中的$router 和 $route的区别
Vue中的$router 和 $route的区别 点击视频讲解更加详细 this.$route:当前激活的路由的信息对象.每个对象都是局部的,可以获取当前路由的 path, name, params, ...
- .Net Core 配置文件读取 - IOptions、IOptionsMonitor、IOptionsSnapshot
原文链接:https://www.cnblogs.com/ysmc/p/16637781.html 众所周知,appsetting.json 配置文件是.Net 的重大革新之心,抛开了以前繁杂的xml ...
- 第五十六篇:webpack的loader(四) -打包js中的高级语法
好家伙, 1.打包处理js文件中的高级语法 webpack只能打包处理一部分高级的JavaScript 语法.对于那些webpack无法处理的高级js 语法,需要借 助于 babel-loader 进 ...
- KingbaseES应对表年龄增长过快导致事务回卷
背景 前几天碰到这样一个场景,在KingbaseES数据库当作数据同步节点.其特点是接收过来的数据量巨大,其更新超级频繁,最大的数据库达到6TB.这还不是主要的,主要导致问题发生原因是同步数据库有很多 ...
- LibTorch | 使用神经网络求解一维稳态对流扩散方程
0. 写在前面 本文将使用基于LibTorch(PyTorch C++接口)的神经网络求解器,对一维稳态对流扩散方程进行求解.研究问题参考自教科书\(^{[1]}\)示例 8.3. 目录 0. 写在前 ...
- 03-MyBatisPlus的CRUD 接口
一.insert 1.插入操作 @RunWith(SpringRunner.class) @SpringBootTest public class CRUDTests { @Autowired pri ...
- 装饰Hexo博客以及部署个人站点
我的博客最开始采用的是Hexo+hexo-theme-next搭建的,使用GitHub Pages托管并进行自动化部署,写文发布的流程非常简单方便,云端写作发布也轻而易举. 本来事情到这里就应该结束了 ...
- PVC-U排水管的断管与接管
1. PVC-U管的常用切割工具 2. PVC-U管的胶粘剂 3. 用胶粘剂粘接PVC-U管与管件
- 用AR Engine手部骨骼跟踪能力实现虚拟手表试戴
AR技术的落地应用,推动着电商领域的不断升级,通过增强现实为用户带来了虚拟与现实结合的AR购物体验.如AR试衣.AR试鞋.AR试妆等功能的出现让用户在手机上就能体验产品的佩戴效果,可以让用户更直观.更 ...
- Redis实现布隆过滤器解析
布隆过滤器原理介绍 [1]概念说明 1)布隆过滤器(Bloom Filter)是1970年由布隆提出的.它实际上是一个很长的二进制向量和一系列随机映射函数.布隆过滤器可以用于检索一个元素是否在一个集合 ...