IO输入输出流
输入输出是以CPU为基准的,当数据从内存来到寄存器的时候叫做输入,从寄存器到内存的时候叫做输出。
文件
其实在操作系统中把很多的资源(软件资源/硬件资源)都抽象成文件.
文件夹也是属于文件,成为目录文件,是保存在硬盘上的。
在硬盘上,存在很多文件和目录.目录又存在一定的“嵌套关系”。
文件的分类方式,有很多种:
文本文件和二进制文件
文本数据是"字符串",每个部分都是"合法的字符",通过GBK或者UTF8等都可以编译出来。
区分一个文件是文本,还是二进制,非常关键编程处理的时候,处理方式(写的代码)是不同的
区分方法就是把文件内容,按照文本方式来理解。
路径
从根节点出发,发,一层一层往下走,最终到达目标文件之后,中间这些目录,集合在一起,就构成了“路径”。
绝对路径
以盘符开头的路径,也称为"绝对路径。
目录和目录之间,使用/或者\进行分割
相对路径
1.当前的基准(工作目录)是D:\program\qq\Bin直接通过./qq.exe的方式就能定位到或者文件。
2. D:\program\qq ./Bin/qq.exe
3. D:\program\qq ./Bin/qq.exe
4. D:\program\qq\Bin\plugins ../qq.exe ../表示上一级目录
使用Java操作文件:
1. 针对文件系统进行操作
创建文件,删除文件,创建目录,重命名文件
import java.io.File;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) throws IOException {
File file=new File("./test1.txt");
file.createNewFile();//创建文件
System.out.println(file.getParent());//获取母目录
System.out.println(file.getName());//获取名字
System.out.println(file.getAbsolutePath());//获取绝对路径
System.out.println(file.getCanonicalPath());//获取美化的路径,可以将其化简
System.out.println(file.getPath());//获取相对路径
System.out.println(file.exists());//是否存在
System.out.println(file.delete());//删除文件
System.out.println(file.exists());//是否存在
}
}
绝对路径=相对路径+./路径名(把当前的工作路径和相对路径进行简单的拼接).
创建文件啥时候会失败呢?
1)给出的路径非法
2)权限不足
file.deleteOnExit();
Scanner in=new Scanner(System.in);
in.hasNextLine();
System.out.println(file.exists());
这个方法是在程序结束后在删除的方法。
有些程序,运行过程中,会产生"临时文件"就需要再进程结束之后,自动删除掉.
编辑word文档的时候,隐藏文件,就会实时记录当前你的编辑的内容是啥假设电脑突然掉电了,即使你没来得及保存,东西还能找回来~~
2.针对文件内容进行操作
读文件,写文件
Java中通过"流"的类,上述的文件内容操作
比如,要读取100字节的文件数据
可以一次读100字节也可以分两次,
每次读50字节还可以分10次,
每次读10字节还可以分100次,
每次读1字节
在Java中,用来操作文件内容的"流”是一组类
虽然提供的类很多,抓住核心的。
字节流(二进制文件)
InputStream
OutputStream
字符流(文本文件)
Reader
Writer
一个字符,是多个字节。
后面的用法,者都基本一样了,通过构造方法,打开文件通过read/write方法来读写文件通过close方法来关闭文件