您的位置:首页 > 其它

IO流技术:开篇概述、File对象构建与相关方法的使用

2019-05-16 14:14 162 查看

本篇包含开篇知识储备,API使用规则、如何构建File对象、以及相关方法的使用。会通过Java编码分析。

API 说明
pathSeparator 、separator 路径 、路径分隔符
File(String parent,String child)、File(File parent,String child) 、File(String name) 构造器、没有盘符以user.dir作为先对目录
getName()、getPath()、getAbsolutePath()、getParent() 文件名、路径名
exists()、isFile()、isDirectory() 判断状态
length() 文件长度
createNewFile()、delete() 创建新文件、删除文件

一、开篇

IO概述:

即输入输出流,流动的即是数据,以二进制的形式呈现,即字节流。人对字符更敏感,我们也可操作字符流。字符流底层还是字节流,自动搜索了我们的码表。

推荐组件:

CommonsIO

数据源:

就是存储数据的地方,例如网站、服务器、数据库。我们操作的是存储数据的文件。

其他:

Java对IO流进行了大量的封装,有很多对应的类和接口(进行了抽象)可直接使用。
核心的5个类和3个接口

序列化:

简单来说就是:对象存储在文件中的过程,而还原对象
又称之为反序列化。

IO流的方向:

输入流-程序-输出流

1、节点流:可以直接从数据源或目的地读写数据
2、包装流(处理流):对流进行封装,简化了操作,能提高性能。
包装流可以对其他流进行处理。

二、API使用规则以及如何构建File对象

1、File类代表的是一个抽象的表示形式。是将Java和文件建立起了一个联系。
2、查看API文档时,发现有的类没有构造器:
①静态工具类,例如 Math.不需要新建一个对象就可以使用
②静态方法去返回,例如Runtime

1、创建File对象的三种方法

代码
public class FileDemo1 {
public static void main(String[] args){
String path = "E:/Java/IO_Study01/src/ERT.jpg";
//构建File 对象
//方法1
File src = new File(path); //丢一个名称
System.out.println(src.length()); //打印图片大小(Kb)
//方法2
src = new File("E:/Java/IO_Study01/src","ERT.jpg"); //父子构建
src = new File("E:/Java/IO_Study01","/src/ERT.jpg"); //能够拼出来就OK
System.out.println(src.length());
//方法3
src = new File(new File("E:/Java/IO_Study01/src"),"ERT.jpg"); //父对象,子名称
System.out.println(src.length());
}
}
结果


2、相对路径与绝对路径

简单讲,区别在于有无盘符

代码
public class FileDemo2 {
public static void main(String[] args){
String path = "E:/Java/IO_Study01/src/ERT.jpg";
//绝对路径
File src = new File(path);
System.out.println(src.getAbsolutePath());
//相对路径:相对于工程路径
System.out.println(System.getProperty("user.dir")); //打印工程路径
src = new File("ERT.jpg");
System.out.println(src.getAbsolutePath());
}
}

注意:File可以构建一个文件,也可以构建一个不存在的路径

结果

3、名称分隔符用 separator

代码
public class PathDemo01 {
public static void main(String[] args){
String path = "E:\\Java\\IO_Study01\\src\\ERT.jpg";
System.out.println(File.separatorChar);
//1、建议用  /   不用转意,可以跨平台
String path1 = "E:/Java/IO_Study01/src/ERT.jpg";
//2、常量拼接,动态
String path2 = "E:"+File.separatorChar+"Java"+File.separatorChar
+"IO_Study01"+File.separatorChar+"src"+File.separatorChar+"ERT.jpg";
System.out.println(path);
System.out.println(path1);
System.out.println(path2);
}
}
结果

三、获取名称或路径

  • getName() 名称
  • getPath() 相对或绝对路径
  • getAbsolutePath() 绝对路径
  • getParent() 上一路径
代码
public class FileDemo3 {
public static void main(String[] args){
File src = new File("src/ERT.jpg");
//基本信息
System.out.println("名称:"+src.getName());
System.out.println("路径:"+src.getPath());
System.out.println("绝对路径:"+src.getAbsolutePath());
System.out.println("父路径:"+src.getParent());
System.out.println("父对象:"+src.getParentFile().getName());
}
}
结果

四、文件状态

1、判断是否存在:exists()
2、若存在:

  • 文件判断:isFile()
  • 文件夹/目录判断:isDirectory()
代码
public class FileDemo4 {
public static void main(String[] args){
File src = new File("src/ERT.jpg");
System.out.println("是否存在:"+src.exists());
System.out.println("是否是文件:"+src.isFile());
System.out.println("是否是文件夹:"+src.isDirectory());
System.out.println("------------");

src = new File("aaa/ERT.jpg");
System.out.println("是否存在:"+src.exists());
System.out.println("是否是文件:"+src.isFile());
System.out.println("是否是文件夹:"+src.isDirectory());
}
}
结果

五、其他信息

1、长度:length()
是字节数 (确保是文件)

代码
public class FileDemo5 {
public static void main(String[] args){
File src = new File("E:/Java/IO_Study01/src/ERT.jpg");
System.out.println("长度:"+src.length());
src = new File("E:/Java/IO_Study01");
System.out.println("长度:"+src.length());
src = new File("E:/Java");
System.out.println("长度:"+src.length());
}
}

注意:返回目录长度时,一般为0或者4096

结果


2、createNewFile() 和 delete() 的使用

代码
public class FileDemo6 {
public static void main(String[] args) throws Exception{
File src = new File("E:/Java/IO_Study01/src/test.txt");
//创建空文件
boolean flag = src.createNewFile();
System.out.println("是否创建成功:"+flag);
//删除已存在的文件
flag = src.delete();
System.out.println("是否删除成功:"+flag);
}
}

注意:操作跟系统打交道,重复名(跟关键字相同)不能创建成功,比如;con com3 …

结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐