IO-1(Java IO、File类)

1. 简介

之前的程序,数据都存储在内存中,一旦运行结束,数据消失。

数据持久化存储:将内存中的数据存储到内存以外的持久化设备中(硬盘,光盘、U盘等)。

OS中,数据都保存文件存放在相应的文件夹。

集合只能在内存中临时存储数据,要长期存储需要用到IO流。

1.1 IO

输出(写)output:需把内存中的数据存储到持久化设备中

输入(读)input:把持久化设备上的数据读到内存中

1.2 Java IO流

流可被看做一组有序的字节集合,本质是数据传输,根据处理数据类型的不同,流可分为:

  • 字节流:以字节(8 bit)为单位,包含两个抽象类:
    1. InputStream(输入流)
    2. OutputStream(输出流)
  • 字符流:以字符(16 bit)为单位,根据码表映射字符,一次可以读多个字节,包含两个抽象类:
    1. Reader(输入流)
    2. Writer(输出流)

字节流在处理输入输出时不会用到缓存,而字符流用到了缓存。

流向    
 输入流读数据FileReaderReader
 输出流写数据FileWriterWriter
数据类型    
 字节流   
  字节输入流读数据InputStream
  字节输出流写数据OutputStream
 字符流   
  字符输入流读数据Reader
  字符输出流写数据Writer

JavaIO设计时采用了Decorator(装饰者)设计模式

其中ByteArrayInputStream、StringBufferInputStream、FileInputStream和PipedInputStream是Java提供的最基本的对流进行处理的类。

FilterInputStream为一个封装类的基类,可以对基本的IO类进行封装。

使用这种设计模式好处:可以在运行时动态地给对象添加一些额外的职责,与使用继承的设计方法相比该方法具有很好的灵活性。

2. File类

io包中

File类的实例不可改变

它是File文件和目录路径名的抽象表示。Java中,把文件或目录(文件夹)都封装成了File对象。

2.1 创建File对象

用构造函数

File(String pathname):将指定的路径名转换为一个File对象

File(String parent,String child):根据指定的父路径和文件名(文件路径)创建File对象

File(File parent,String child):根据父路径对象和文件路径创建对象

String pathName="e:\\java_code\\hello.java";
File f1=new File(pathName);
//创建了一个File对象f1指向了一个路径;
//若hello.java存在,不会创建它只是指向路径

File f2=new File("e:\\java_code\\hello.java");

File dir=new File("e:\\java_code");
File f3=new File(dir,"hello.java");

2.2 常用方法

1、获取文件的绝对路径,即全路径:getAbsolutePath()

String abspath=f1.getAbsolutePath();
  • 绝对路径:以盘符开头,固定,不可改变的路径
  • 相对路径:不能以盘符开头,相对某个参照物的。在eclipse中相对于当前项目的根目录,与src平级。

2、获取File封装的路径:getPath()

String path=f1.getPath();

3、获取文件名称和文件夹名称:getName()

String fileName=f1.getName();

4、获取文件大小(字节数):length()——bytes

long size=fi.length();

2.3 File类操作

File file=new File("e:\\file.txt");

1、创建文件:createNewFile()

  • 若文件不存在,创建,返回true
  • 若文件存在,不创建,返回false
  • 路径错误,IOException
boolean b1=file.createNewFile();

2、删除文件夹(不去回收站):delete()

boolean b2=file.delete();

3、判断文件是否存在:exists()

boolean b3=file.exists();

4、对目录的操作

①创建单个目录:mkdir()

File dir=new File("e:\\abd");
boolean b4=dir.mkdir();

和createFile()类似。

②创建多个目录:mkdirs()

File dir=new File("a\\b\\c");
boolean b5=dir.mkdirs();

"a\\b\\c"父路径不存在时也会创建

③删除:delete()

boolean b5=dir.delete();

只有将目录中的内容都删除,保证目录为空,才能删除此目录。

5、判断时文件还是目录

file.exists();
file.isFile();
file.isDictionary();

以上三个方法都返回的是boolean值。

6、获取目录下的当前文件以及文件夹的名字:list()

File dir=new File("e:\\java");
String[] names=dir.list();
for(String name:names){
    System.out.println(name);
}

7、获取目录下当前文件以及文件对象:listFiles()

File[] files=dir.listFiles();
for(File file:files){
    System.out.println(file);
}

注:6、7中,获取时需确定目录存在,而且指定的必须是目录。

否则易返回null,出现NullPointerException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值