目录
1 IO流的概念
流是一个抽象的概念,当程序读取数据时,就会开启一个通往数据源的流,这个数据源可以是文件、内存或者是网络链接;或当程序写入数据时,就会开启一个通往目的地的流
java中把不同到的来源或者目的地的数据都统一抽象为数据流
流的本质:就是对数据的传输,数据的一个集合,有方向性
2 IO流体系结构
- IO流的体系结构图
- 流的实现类
3Java中流的分
3.1按流向分
输入流:从 数据源 (磁盘,U盘,网络,键盘等)读取数据到 程序 的流
输出流:从 程序 写入数据到 目的地数据源(磁盘,U盘,网络,显示器等) 的流
3.2按数据传输单位分
字节流:以字节为单位传输数据的流
字符流:以字符为单位传输数据的流
3.3按功能分
节点流:用于直接操作目标设备的流
过滤流:对一个已存在的流进行包装,以提供更强大和灵活的读写功能
4File类介绍
4.1File类的作用
对文件,目录的抽象表示,该类主要对目录和文件进行创建、修改、删除、过滤等操作
4.2常见的构造函数
//3种构造方法
File(String pathname) //用路径字符串实例化File实例
File(String parent, String child) //从父路径名(字符串)和子路径名(字符串)来构建file实例
File(File parent, String child) //根据父路径File实例和子路径名(字符串)来构建实例
//实例化演示
//String pathname
File file1 = new File("/Users/ccc/Desktop/IO/file1.txt");
//String parent, String child
File file2 = new File("/Users/ccc/Desktop/IO", "file2.txt");
//File parent, String child
File parent = new File("/Users/ccc/Desktop/IO");//先实例化出父路径
File file3 = new File(parent, "file3.txt");
4.3提供方法
4.3.1创建和删除
创建文件 createNewFile()
创建单个目录 mkdir()
创建多级目录 mkdirs()
删除文件或者单个目录 delete()
//创建文件
File test = new File("/Users/ccc/Desktop/IO/a.txt");
try {
//public boolean createNewFile() throws IOException
// 创建新文件 当文件不存在时创建该文件并返回true,当文件存在时不会创建文件并返回false
//创建文件时,路径必须存在,否则创建失败
//创建:createNewFile()
boolean newFile = test.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
//没有指明创建路径时,文件将会被创建在当前的这个项目路径下
File test2 = new File("b.txt");
test2.createNewFile();
//创建目录
//boolean mkdir()
// 通过抽象路径来创建目录,mkdir()只能创建一级目录
File test3 = new File("/Users/ccc/Desktop/IO/c");
test3.mkdir();
//boolean mkdirs()
//mkdirs()用来创建多级目录
File test4 = new File("/Users/ccc/Desktop/IO/d/e");
test4.mkdirs();
//没有指明创建路径时,调用生成文件方法时,文件将会被创建在这个项目路径下
File test5 = new File("b");
test5.createNewFile();
//没有指明创建路径时,调用生成目录(文件夹)方法时,目录(文件夹)将会被创建在这个项目路径下
//test5.mkdirs();
//删除
//删除目录和文件
//boolean delete()
//只能删除存在的一层文件或者目录,不能直接删除多级目录
test5.delete();
4.3.2文件获取
获取绝对路径 带盘符 getAbsolutePath()
获取相对路径 不带盘符 getPath()
获取文件名或者路径名 getName()
获取文件字节数 length()
获取目录下面的内容(文件或者目录) list()
返回目录文件和目录名称file实例数组 listFiles()
//文件获取
File file = new File("D:\\ccc\\JAVASE");
//获取绝对路径 带盘符
//String getAbsolutePath()
System.out.println(file.getAbsoluteFile());
//相对路径 不带盘符
//String getPath()
System.out.println(file.getPath());
//获取文件名或者路径名
//String getName()
System.out.println(file.getName());
//文件字节数
//long length()
System.out.println(file.length());
//获取目录下面的内容(文件或者目录)
//String[] list()
String[] list = file.list();
for(String i:list ){
System.out.println(i);
}
//返回目录文件和目录名称file实例数组
//File[] listFiles()
File[] files = file.listFiles();
for(File i: files){
System.out.println(i.getName());
}
4.3.3重命名和修改路径功能
renameTo()
//重命名功能 和 修改路径功能 都使用renameTo()方法
//区别:修改前后的路径相同就是重命名,不同则是修改路径
//重命名功能
//boolean renameTo(File dest)
//先在该项目路径下创建一个文件b.txt
File text = new File("b.txt");
//实例化一个修改后的名称bb.txt
File text1 = new File("bb.txt");
text.renameTo(text1);
//修改路径功能
//boolean renameTo(File dest)
File text = new File("bb.txt");
File text1 = new File("C:\\Users\\ccc\\Desktop\\IO流\\bb.txt");
text.renameTo(text1);
//重命名功能 和 修改路径功能 都使用renameTo()方法
//区别:修改前后的路径相同就是重命名,不同则是修改路径
4.3.4判断功能
是否是文件 isFile()
是否是目录(文件夹)isDirectory()
是否是隐藏文件 isHidden()
文件是否可读 canRead()
文件是否可写 canWrite()
文件是否存在 exists()
//判断功能
File test = new File("bb.txt");
test.createNewFile();
//boolean isFile()
//是否是文件
boolean b = test.isFile();
System.out.println(b);
//boolean isDirectory()
//是否是目录(文件夹)
boolean b1 = test.isDirectory();
System.out.println(b1);
//boolean isHidden()
//是否是隐藏文件
System.out.println(test.isHidden());
//boolean canRead()
//文件是否可读
System.out.println(test.canRead());
//boolean canWrite()
//文件是否可写
System.out.println(test.canWrite());
//boolean exists()
//文件是否存在
System.out.println(test.exists());
4.3.5过滤功能的接口方法
public interface FilenameFilter {
//参数为目录和指定过滤名称
//返回结果 true: 可以返回 false:不能返回
boolean accept(File dir, String name);
}
5RandomAccessFile(随机访问文件类)的介绍
5.1声明形式
public class RandomAccessFile implements DataOutput, DataInput, Closeable
5.2构造函数
public RandomAccessFile(String name, String mode)
public RandomAccessFile(File file, String mode) //mode 可以是 r rw rws rwd
r:以只读的模式打开,如果调用write方法将会抛出IO异常
rw:以读和写的模式打开
rws:以读和写的模式打开,要求对”文件的内容“和”元数据“的每个更新都同步到存储设备
rwd:以读和写的模式打开,要求对”文件的内容“的每个更新都同步到存储设备
5.3特殊方法
long getFilePointer() //返回文件记录中指针的当前位置
void seek(long pos) //将文件记录移动到指定的pos文件
在文件中的指定位置插入字符串问题(戳下面蓝色字跳转哦~):