File类

介绍

  1. File类的一个对象,代表一个文件或一个文件目录
  2. File类声明在java.io包下
  3. File类中涉及关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成
  4. File类的对象常会作为参数传递到流的构造器中,指明读取或写入的终点
  5. 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有真实存在的文件或目录。
//以pathname为路径创建File对象,可以是 绝对路径或者相对路径,如果
public File(String pathname) //以parent为父路径,child为子路径创建File对象。
public File(String parent,String child) //根据一个父File对象和子文件路径创建File对象
public File(File parent,String child)

路径的分类

  • 绝对路径:是一个固定的路径,从盘符开始
  • 相对路径:是相对于某个位置开始
  • IDEA中:如果大家开发使用JUnit中的单元测试方法测试,相对路径即为当前Module下。如果大家使用main()测试,相对路径即为当前的Project下。
  • Eclipse中:不管使用单元测试方法还是使用main()测试,相对路径都是当前的Project下。

分隔符

路径中的每级目录之间用一个路径分隔符隔开。

路径分隔符和系统有关:

  • windows和DOS系统默认使用\来表示
  • UNIX和URL使用/来表示

Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决这个隐患,File类提供了一个常量:

public static final String separator

根据操作系统,动态的提供分隔符

举例

File file1= newFile("d:\\atguigu\\info.txt");
File file2= newFile("d:"+ File.separator+ "atguigu"+ File.separator+ "info.txt");
File file3= newFile("d:/atguigu");

常用方法

获取方法

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数组

重命名方法

public boolean renameTo(Filedest)	//把文件重命名为指定的文件路径

示例

File dir1= newFile("D:/IOTest/dir1");
if(!dir1.exists()) {
// 如果D:/IOTest/dir1不存在,就创建为目录
dir1.mkdir();
}
// 创建以dir1为父目录,名为"dir2"的File对象
File dir2= newFile(dir1, "dir2");
if(!dir2.exists()) {
// 如果还不存在,就创建为目录
dir2.mkdirs();
}
File dir4= newFile(dir1, "dir3/dir4");
if(!dir4.exists()) {
dir4.mkdirs();
}
// 创建以dir2为父目录,名为"test.txt"的File对象
File file= newFile(dir2, "test.txt");
if(!file.exists()) {
// 如果还不存在,就创建为文件
file.createNewFile();
}

IO流原理及流的分类

流的分类

  • 按数据单位:字节流(8 bit)、字符流(16 bit)
  • 按数据的流向:输入流、输出流
  • 按流的角色:
    • 节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
    • 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写

【说明】:

  • 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
  • 输出output::将程序(内存)数据输出到磁盘、光盘等存储设备中。

流的体系结构

红框对应的是IO流中的4个抽象基类。蓝框的流需要重点关注。

【Java】IO流的更多相关文章

  1. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  2. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  3. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  4. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

  5. java io流 对文件夹的操作

    java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...

  6. Java IO流题库

    一.    填空题 Java IO流可以分为   节点流   和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数 ...

  7. Java IO流总结

    Java IO流分类以及主要使用方式如下: IO流 |--字节流 |--字节输入流 InputStream: int read();//一次读取一个字节 int read(byte[] bys);// ...

  8. java io流 运行错误时,保存异常到文件里面

    java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...

  9. java io流 创建文件、写入数据、设置输出位置

    java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...

  10. java io流 数据流传输

    java io流 数据流传输 把这段当公式用就可以了 //数据流传输 import java.io.*; public class Index{ public static void main(Str ...

随机推荐

  1. 微信小程序自动化测试

    使用官方工具 使用webview测试方法,当2019年被微信封禁 使用native定位

  2. python 正则表达式findall

    re.findall("匹配规则", "要匹配的字符串") 以列表形式返回匹配到的字符串 https://www.cnblogs.com/gufengchen/ ...

  3. Python项目生成requirements.txt文件之pipreqs的使用

    生成requirements.txt时使用pip freeze > requirements.txt会将环境下所有的安装包都进行生成,再进行安装的时候会全部安装很多没有的包.耗时耗力其实是不可取 ...

  4. docker network 参数

    一. 格式 docker network COMMAND 二.COMMAND 讲解 2.1 .docker network connect 格式 docker network connect [OPT ...

  5. Nresource服务之接口缓存化

    1. 背景 Nresource服务日均4.5亿流量,考虑到未来流量急增场景,我们打算对大流量接口进行缓存化处理:根据服务管理平台数据统计显示getUsableResoureCount接口调用量很大,接 ...

  6. Unittest 框架之测试固件-----(setUp与tearDown)你真的会用吗?

    前言 做自动化测试中,需要管理大量的测试用例,如果不用框架管理用例,那会是一件很麻烦的事. 如果所示只写了一个用例,内容就是输入网易邮箱账号和密码 test fixture:测试固件 简单来说就是做一 ...

  7. 洛谷4103 HEOI2014大工程(虚树+dp)

    又是一道虚树好题啊 我们建出来虚树,然后考虑dp过程,我们分别令\(sum[x],mndis[x],mxdis[x],size[x]\)为子树内的路径长度和,最短链,最长链,子树内关键点个数. 对于一 ...

  8. hdu4479 (数学题)(算术基本定理)

    题目大意 给定一个三元组\((x,y,z)\)的\(gcd\)和\(lcm\),求可能的三元组的数量是多少,其中三元组是的具有顺序的 其中\(gcd\)和\(lcm\)都是32位整数范围之内 由算术基 ...

  9. HttpServletRequest 入门

    1. request对象和response对象的原理 request和response对象是由服务器创建的.我们来使用它们 request对象是来获取请求消息,response对象是来设置响应消息 2 ...

  10. 替换excel模板中的内容并使用JavaMail发送邮件

    由于在公司工作,常年出差,每天都要以日报的形式向公司汇报当天的工作内容.而日报的内容大体上就只有当天工作的主要内容时变化的,其余的都是不变 的. 而我的电脑刚打开excel有点卡,因此决定使用Java ...