io流 (一)

一、File类的使用
File类的一个对象,就代表一个文件或者一个文件目录(文件夹)

java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关

File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
如果需要访问文件内容本身,则需要使用输入/输出流。
想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
File对象可以作为参数传递给流的构造器
1.File类的实例化
1.1 常用的File类构造方法
`public File(String pathname)

以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
绝对路径:是一个固定的路径,从盘符开始
相对路径:是相对于某个位置开始。一般是当前文件所在的路径下。
public File(String parent,String child)

以parent为父路径,child为子路径创建File对象。
public File(File parent,String child)

根据一个父File对象和子文件路径创建File对象
import java.io.File;
public class Demo01 {
public static void main(String[] args) {
//构造器1:public File(String pathname)——以pathname为路径创建File对象
//相对路径:默认相对于当前module的路径下
File file = new File(“hello.txt”);
//绝对路径:从盘符开始的路径,每级目录下要用路径分隔符隔开,路径分隔符和系统有关
//为了跨平台运行,File类提供了一个常量File.separator来根据操作系统适配路径分隔符
File file1 = new File(“F:\project\Markdown learning\hellogame.txt”);
File file2 = new File(“F:”+ File.separator + “project”+ File.separator + “Markdown learning” + File.separator + “helloworld.txt”);
System.out.println(file);
System.out.println(file1);
System.out.println(file2);
//构造器2:public File(String parent,String child)——以parent为父路径,child为子路径创建File对象。
File file3 = new File(“F:\progect”, “learn”);
System.out.println(file3);
//构造器3:public File(File parent,String child)——根据一个父File对象和子文件路径创建File对象
File file4 = new File(file3,“learn.txt”);
System.out.println(file4);
}
}
1.2 路径分割符
路径中的每级目录之间用一个路径分隔符隔开。

路径分隔符和系统有关:

windows和DOS系统默认使用“\”来表示
UNIX和URL使用“/”来表示
Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决这个隐患,File类提供了一个常量:public static final String separator,根据操作系统,动态的提供分隔符。

//绝对路径
File file1 = new File(“d:\study\learn.txt”);
File file2 = new File(“d:” + File.separator + “study” + File.separator + “learn.txt”);
//相对路径:默认在当前module下创建一个文件
File file3 = new File(“learn.txt”);
2. File类的常用方法
File类的获取功能

public String getAbsolutePath():获取绝对路径
public String getPath() :获取路径
public String getName():获取名称
public String getParent():获取上层文件目录路径。若无,返回null
public long length():获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified():获取最后一次的修改时间,毫秒值
关于文件目录的获取的操作方法:

public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
File类的重命名功能

public boolean renameTo(File dest):把文件重命名为指定的文件路径
要想保证返回true,即重命名成功,必须保证原文件(需要重命名的文件)在硬盘中存在,且dest文件在硬盘中不存在。

File类的判断功能

public boolean isDirectory():判断是否是文件目录
public boolean isFile():判断是否是文件
public boolean exists() :判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden():判断是否隐藏
File类的创建功能

public boolean createNewFile():创建文件。若文件存在,则不创建,返回false

public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。

public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建

注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。

File类的删除功能

public boolean delete():删除文件或者文件夹

注意事项:Java中的删除不走回收站。要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录

File类中的方法都是关于文件或文件目录的创建、删除、重命名、修改时间、文件大小功能,而对于写入或读取文件内容的操作,File类的方法是不具备的,若要进行这些关于文件写入和读取的操作,就需要用到IO流来完成。

File类的对象常会作为参数传递到流的构造器当中,相当于指明流的读取或写入操作的对象

二、IO流及流的分类
2.1 I/O原理
I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。

Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

2.2 流的分类
按操作数据单位不同分为:字节流(8 bit,Byte,非文本数据),字符流(16 bit,char,文本数据)
按数据流的流向不同分为:输入流,输出流
按流的角色的不同分为:节点流(直接作用在文件的流),处理流(作用在现有流上的具备一定功能的流)

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

InputStream:操作于字节流,用于非文本数据(.png,.doc,.mp3,.mp4,.avi……)的读取(到程序)
OutStream:操作与字节流,用于非文本数据(.png,.doc,.mp3,.mp4,.avi……)的写出(到硬盘)
Write:操作于字符流,用于文本数据(.txt,.java,.c,.cpp……)的读取(到程序)
Reader:操作与字符流,用于文本数据(.txt,.java,.c,.cpp……)的写出(到硬盘)
由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明,KuangStudy,以学为伴,一生相伴!

本文链接:https://www.kuangstudy.com/bbs/1382327011699085313

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值