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. CF802O-April Fools‘ Problem(hard)【wqs二分,优先队列】

    正题 题目链接:https://www.luogu.com.cn/problem/CF802O 题目大意 \(n\)天每条有\(a_i\)和\(b_i\). 每条可以花费\(a_i\)准备至多一道题, ...

  2. Python下载课件

    from urllib.request import urlretrieve # #下载网络文件到本地 import os os.chdir("C:/Users/RankFan/Deskto ...

  3. 获取HTML网页中option标签元素的值

    在进行表单元素的操作时,难免会遇到对option元素的挑选,下面的示例代码能够很好的获取到你option元素选择的值,如果要传递给后端,可通过ajax或者其他方式传递即可. 示例代码 <!doc ...

  4. C++ Primer 查漏补缺 —— C++ 中的各种初始化

    初学者在刚开始读 C++ Primer 的时候,总是容易被书中各种初始化搞得头大:默认初始化.列表初始化.值初始化.类内初始值.构造函数初始值列表.new int 和 new int() 的区别... ...

  5. linux 测试2

    .阅读目录●第一种:cat /dev/null > filename●第二种:: > filename●第三种:> filename●第四种:echo "" &g ...

  6. 🚴‍♂️全套MySQL数据库教程_Mysql基础入门教程,零基础小白自学MySQL数据库必备教程☔ #002 # 第二单元 MySQL数据类型、操作表#

    二.本单元知识点概述 (Ⅰ)知识点概述 二.本单元教学目标 (Ⅰ)重点知识目标 1.Mysql的数据类型2.如何选择数据类型3.创建表4.修改表5.删除表 (Ⅱ)能力目标 1.熟练创建数据库及删除数据 ...

  7. Spirit带你了解如何安全引入第三方资源

    Spirit带你了解如何安全的引入第三方资源 本文介绍一下如何安全的引入第三方资源 同源策略(SOP) 首先我们来了解一下什么是同源策略,下面的是wiki百科的定义 同源策略是指Web浏览器中,允许某 ...

  8. Ysoserial Commons Collections7分析

    Ysoserial Commons Collections7分析 写在前面 CommonsCollections Gadget Chains CommonsCollection Version JDK ...

  9. [CPP] 类的内存布局

    本文可以解决下面 3 个问题: 以不同方式继承之后,类的成员变量是如何分布的? 虚函数表及虚函数表指针,在可执行文件中的位置? 单一继承.多继承.虚拟继承之后,类的虚函数表的内容是如何变化的? 在这里 ...

  10. str数组