-
day34-IO流01
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对象 |
|
|
|
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:\ |
|
|
|
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)//根据父目录+子路径构建 |
|
|
|
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) { |
|
|
|
} |
|
|
|
//获取文件的信息 |
|
|
|
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: ews1.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是否存在,如果存在就删除 |
|
|
|
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中,目录也被当做文件 |
|
|
|
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目录是否存在,如果存在就提示已经存在,否则创建 |
|
|
|
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流原理
- I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等
- Java程序中,对于数据的输入/输出操作以”流(Stream)“的方式进行
- java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方法输入或输出数据
- 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
- 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中
3.2流的分类
-
按操作数据单位不同分为:字节流(8bit)、字符流(按字符)
字节流适用于二进制文件,字符流适用于文本文件
-
按数据流的流向不同分为:输入流、输出流
-
按流的角色不同分为:节点流、处理流(也叫包装流)
抽象基类 | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
1)Java的IO流共涉及到40 多个类,实际上非常规则,都是从如上4个抽象基类派生的
InputStream、OutputStream、Reader、Writer都是抽象类,在使用的时候要去创建它们的实现子类
2)由这四个类派生出来的子类名称都是以其父类名作为子类名后缀
4.常用的类
InputStream抽象类是所有类字节输入流的超类
InputStream常用的子类:
-
FileInputStream:文件输入流
-
BufferedInputStream:缓冲字节输入流
-
ObjectInputStream:对象字节输入流
4.1FileInputStream
出处:https://www.cnblogs.com/liyuelian/p/16673686.html
栏目列表
最新更新
一个超经典 WinForm 卡死问题的再反思
C# 计算不规则多边形的相交/包含等关系
.NET Core 引发的异常:“sqlsugar.sqlsugarexcep
快速创建软件安装包-ClickOnce
nuget打包静态资源的问题
要写文档了,emmm,先写个文档工具吧——
乘风破浪,遇见最佳跨平台跨终端框架
【Windows版本控制】上海道宁为您提供Vi
available 处理办法
Visual Studio自定义背景图片
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
在vscode中使用R时,用快捷键来快捷键入卡
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型