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 ...
随机推荐
- [CF1537E] Erase and Extend (字符串)
题面 给一个长度为 n \tt n n 的字符串,你可以进行无限次以下两种操作之一: 删去末尾的字符(此时要保证删去后字符串非空). 把当前整个字符串复制一份,接到自己的后面. 输出最终通过操作能达到 ...
- Android配置OpenCV C++开发环境
网上的OpenCV配置环境大部分都不能正常配置成功,不是编译时报找不到so,就是运行找不到so.本文是我试了不少坑才找到的配置方法.其原理是让AndroidStudio自己根据mk文件自动配置. 1. ...
- ipad好伴侣
https://museapp.com/ Muse是用于研究笔记,阅读,草图,屏幕截图和书签的空间画布.
- hadoop 文件参数配置
准备环境(省略) 上传实验所需的压缩包 配置网络信息 修改主机名 配置域名解析 关闭防火墙与SELinux(在所有节点上执行)代码如下: systemctl disable --now firewal ...
- luogu P2882 [USACO07MAR]Face The Right Way G
题目描述 Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are facing forwar ...
- 记一次 .NET 某数控机床控制程序 卡死分析
一:背景 1. 讲故事 前段时间有位朋友微信上找到我,说它的程序出现了卡死,让我帮忙看下是怎么回事? 说来也奇怪,那段时间求助卡死类的dump特别多,被迫训练了一下对这类问题的洞察力 ,再次声明一下, ...
- 理解 KingbaseES 中的递归查询
关键字:SQL,CTE,递归查询 概述:通常递归查询是一个有难度的话题,尽管如此,它们仍使您能够完成在 SQL 中无法实现的操作.本文通过示例进行了简单介绍,并展示了与 PL/SQL的递归查询实现的差 ...
- Lua CallbackHell优化
概述 在异步操作中,常常要使用回调.但是,回调的嵌套常常会导致逻辑混乱,一步错步步错,难以维护.在Lua中,可以使用协程进行优化. 问题分析 模拟一个回合制游戏攻击过程 local function ...
- ingress-nginx 的使用 =》 部署在 Kubernetes 集群中的应用暴露给外部的用户使用
文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488189&idx=1&sn=8175f067 ...
- filebeat直接给es传输日志,自定义索引名,自定义多个索引文件
官方文档地址: https://www.elastic.co/guide/en/beats/filebeat/7.3/elasticsearch-output.html https://www.ela ...