IO流01

1.文件基础知识

什么是文件?

文件,我们并不陌生。文件是保存数据的地方。比如大家经常使用的word文档,txt文件,excel文件等,都是文件。它既可以保存一张图片,也可以保存声音、视频……

  • 文件流

    文件在程序中是以流的形式来操作的:

流:数据在数据源(文件)和程序(内存)之间经历的路径

输入流:数据从数据源(文件)到程序(内存)之间的路径

输出流:数据从程序(内存)到数据源(文件)之间的路径

2.常用的文件操作

2.1创建文件

  • 创建文件对象相关构造器和方法

    相关方法:

    new File(String pathname)//根据路径构建一个File对象
    new File(File patent,String child)//根据父目录文件+子路径构建
    new File(String parent,String child)//根据父目录+子路径构建

例子:应用案例演示:FileCreate

package li.io.file;

import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException; //演示创建文件
public class FileCreate {
public static void main(String[] args) { } //方式一 new File(String pathname)//根据路径构建一个File对象
@Test
public void creat01() {
String filePath = "d:\\news1.txt";
File file = new File(filePath);//在内存中创建一个File对象
try {
file.createNewFile();//创建文件
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
}
} //方式二 new File(File patent,String child)//根据父目录文件+子路径构建
//例如:d:\\news.txt,父目录文件就是 d:\\
@Test
public void creat02() {
File parenFile = new File("d:\\");
String fileName = "news2.txt";
//这里的file对象,在java程序中只是一个java对象而已
//只有执行了createNewFile方法,才会真正地在磁盘创建文件
File file = new File(parenFile, fileName);
try {
file.createNewFile();//创建文件
System.out.println("创建成功~");
} catch (IOException e) {
e.printStackTrace();
} } //方式三 new File(String parent,String child)//根据父目录+子路径构建
@Test
public void creat03() {
String parentPath = "d:\\"; //这里的两个 \\,其中有一个是转义符号,或者直接用 d:/
String filePath = "news3.txt";
File file = new File(parentPath, filePath);
try {
file.createNewFile();
System.out.println("创建文件成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}

2.2获取文件的相关信息

  • getName()
  • getAbsolutePath()
  • getParent()
  • length()
  • exists()
  • isFile()
  • isDirectory()

例子:

package li.io.file;

import org.junit.jupiter.api.Test;

import java.io.File;

public class FileInformation {
public static void main(String[] args) { } //获取文件的信息
@Test
public void info() {
//先创建文件对象
File file = new File("d:\\news1.txt"); //调用相应方法,得到对应信息 //文件名字-getName()
System.out.println("文件名字="+file.getName());//文件名字=news1.txt //文件的绝对路径-getAbsolutePath()
System.out.println("文件的绝对路径="+file.getAbsolutePath());//文件的绝对路径=d:\news1.txt //文件的父级目录-getParentFile()
System.out.println("文件的父级目录="+file.getParentFile());//文件的父级目录=d:\ //文件的大小(字节)-length()
System.out.println("文件的大小(字节)="+file.length());//文件的大小(字节)=12 Hello World! //文件是否存在-exists()
System.out.println("文件是否存在="+file.exists());//文件是否存在=true //是否为文件-isFile()
System.out.println("是否为文件="+file.isFile());//是否为文件=true //是否为目录-isDirectory()
System.out.println("是否为目录="+file.isDirectory());//是否为目录=false }
}

2.3目录的操作和文件删除

  • mkdir():创建一级目录

  • mkdirs():创建多级目录

  • delete():删除空目录或者文件

例子:

package li.io.file;

import org.junit.jupiter.api.Test;

import java.io.File;

public class Directory_ {
public static void main(String[] args) { } //判断 d:\\news1.txt是否存在,如果存在就删除
@Test
public void m1() {
String filePath = "d:\\news1.txt";
File file = new File(filePath);
if (file.exists()) {
if (file.delete()) {
System.out.println(filePath + "删除成功");
} else {
System.out.println("删除失败...");
}
} else {
System.out.println("该文件不存在...");
}
} //判断 d:\\demo02 是否存在,存在就删除,否则就提示不存在
//这里我们需要体会到,在java中,目录也被当做文件
@Test
public void m2() {
String filePath = "d:\\demo02";
File file = new File(filePath);
if (file.exists()) {
if (file.delete()) {
System.out.println(filePath + "删除成功");//d:\demo02删除成功(先在d盘下创建一个名为 demo02的目录)
} else {
System.out.println("删除失败...");
}
} else {
System.out.println("该目录不存在...");
}
} //判断d:\\demo\\a\\b\\c目录是否存在,如果存在就提示已经存在,否则创建
@Test
public void m3() {
String directoryPath = "d:\\demo\\a\\b\\c";
File file = new File(directoryPath);
if (file.exists()) {
System.out.println("该目录已经存在");
} else {
if (file.mkdirs()) {//多级目录使用 mkdirs方法,一级目录使用 mkdir
System.out.println(directoryPath + "创建成功...");
} else {
System.out.println("创建失败...");
}
}
}
}

3.IO流原理及流的分类

3.1Java IO流原理

  1. I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等
  2. Java程序中,对于数据的输入/输出操作以”流(Stream)“的方式进行
  3. java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方法输入或输出数据
  4. 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
  5. 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中

3.2流的分类

  • 按操作数据单位不同分为:字节流(8bit)、字符流(按字符)

    字节流适用于二进制文件,字符流适用于文本文件

  • 按数据流的流向不同分为:输入流、输出流

  • 按流的角色不同分为:节点流、处理流(也叫包装流)

抽象基类 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

1)Java的IO流共涉及到40 多个类,实际上非常规则,都是从如上4个抽象基类派生的

InputStream、OutputStream、Reader、Writer都是抽象类,在使用的时候要去创建它们的实现子类

2)由这四个类派生出来的子类名称都是以其父类名作为子类名后缀

4.常用的类

InputStream抽象类是所有类字节输入流的超类

InputStream常用的子类:

  1. FileInputStream:文件输入流

  2. BufferedInputStream:缓冲字节输入流

  3. ObjectInputStream:对象字节输入流

4.1FileInputStream

day34-IO流01的更多相关文章

  1. java——IO流01

    移动文件有一种简单方法,不需要复制文件再删除文件. package com.unir.test01; import java.io.File; import java.io.IOException; ...

  2. Java基础知识强化之IO流笔记01:异常的概述和分类

     IO流操作的时候会出现很多问题,java中叫作异常,所以我们先介绍一下异常: 1. 程序的异常:Throwable(Throwable类是java中所有异常或错误的超类) (1)严重问题:Error ...

  3. IO流(字节流复制)01

    package ioDemo; import java.io.*; /** * IO流(字节流复制) * Created by lcj on 2017/11/2. */ public class bu ...

  4. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

  5. 01 语言基础+高级:1-8 File类与IO流_day09【字节流、字符流】

    day09[字节流.字符流] 主要内容 IO流 字节流 字符流 异常处理 Properties 教学目标 能够说出IO流的分类和功能 能够使用字节输出流写出数据到文件 能够使用字节输入流读取数据到程序 ...

  6. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  7. java io系列01之 "目录"

    java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...

  8. IO流01--毕向东JAVA基础教程视频学习笔记

    提要 01 IO流(BufferedWriter)02 IO流(BufferedReader)03 IO流(通过缓冲区复制文本文件)04 IO流(readLine的原理)05 IO流(MyBuffer ...

  9. Java IO流详尽解析

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  10. 【转载】JAVA IO 流的总结

    来自http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html,写的很详细 Java流操作有关的类或接口: Java流类图结构: 流的概念和 ...

随机推荐

  1. 【文件】C语言文件操作及其使用总结篇【初学者保姆级别福利】

    [文件]C语言文件操作及其使用总结篇[初学者保姆级别福利] 一篇博客学好动态内存的管理和使用 这篇博客干货满满,建议收藏再看哦!! 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很 ...

  2. P9993 [Ynoi Easy Round 2024] TEST_133 题解

    题目链接: [Ynoi Easy Round 2024] TEST_133 首先历史最大加,吉司机跑不掉了,维护历史最大加标记以及历史最大,那么根据吉司机标记思想更新操作应该为 \[new \Left ...

  3. h5st 4.3版本代码研究

    背景介绍 最近比较悠闲,于是没事研究了一下某东的h5st代码,2024年新鲜出炉的前端加密代码: 最大的惊喜并不是算法的复杂,在逆向破解代码的过程中,对js加密混淆有了新的认识: 于是心血来潮,回到这 ...

  4. 【奶奶看了都会】ComfyUI+SVD制作AI视频教程,附效果演示

    AI一天,人间一年 大家好啊,我是小卷,最近AI绘画又发展出一些新玩意了,小卷因为工作的关系有一个月没关注AI的发展了,都有点跟不上版本节奏了... 1.comfyui的使用效果 今天给大家介绍下AI ...

  5. USACO 2022 Cu 题解

    USACO 2022 Cu 题解 AK用时:$ 3 $ 小时 $ 30 $ 分钟. A - Cow College 原题 Farmer John 计划为奶牛们新开办一所大学! 有 $ N $($ 1 ...

  6. Go语言核心36讲(Go语言实战与应用十)--学习笔记

    32 | context.Context类型 我们在上篇文章中讲到了sync.WaitGroup类型:一个可以帮我们实现一对多 goroutine 协作流程的同步工具. 在使用WaitGroup值的时 ...

  7. .NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(下)

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 这里还有一个比较特殊的用法 一般情况下,我们前后端分离的架构,前端会编译成一个 index.html 文件和若干个 CSS 文件和 JavaSc ...

  8. EmuELEC 4.3 安装和乐视手柄 LeWGP-201 evremap问题解决

    一年多前安装了EmuELEC3.9之后, 就一直没有再更新过, 平时玩玩小游戏也很正常. 昨天心血来潮想把吃灰的乐视手柄用起来, 结果发现3.9里面没有evremap 命令. 猜测可能是这个版本的问题 ...

  9. 【framework】Task简介

    1 前言 ​ Task 即任务,一个 Task 对应一个 Activity,其父容器为 TaskStack,子容器为 AppWindowToken. ​ 关于其父类及祖父类的介绍,见 → Window ...

  10. 如何拓展jwt返回的数据

    默认的返回值仅有token,我们还需在返回值中增加username和id,方便在客户端页面中显示当前登陆用户 通过修改该视图的返回值可以完成我们的需求. 在user/utils.py中,创建 def ...