java文件操作和IO流入门级教程(1)

简介: java文件操作和IO流入门级教程(1)

认识文件

什么是文件呢?


我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般.


计算机中的文件就和我们现实中的文件相似!

我们一般通过硬盘存储文件!

所以我们硬盘下存储了好多文件


例如:

.java文件(我们编写的java代码) .jpg文件(图片也是文件),.txt文件(文本文件)…我们硬盘下的文件还有很多…

我们这里就不一一举例了!

image.png




不同的后缀名,为不同类型的文件!

所以我们需要打开查看后缀名(默认是查看不了后缀名的),便于我们知道文件的类型!

image.png

我们知道存储在硬盘上的就是文件,除了上面这些可以打开的文件,还有目录文件!目录(我们所说的文件夹)也是文件的一种!

image.png

像这些文件夹都是文件的一种!


在操作系统中,网卡也是一种文件,还有很多硬件设备都看作是文件!

键盘,鼠标,打印机等等都看做是文件,还有些软件也被当做是文件!

这样便于管理,操作同样的文件管理的代码可以操作所有的文件


文件分类

我们这里的分类站在程序员的角度!

我们将文件分为两类:


文本文件

文本文件存储的是字符,我们知道一个字符,可能占多个字节单位!

二进制文件

二进制文件储存的是二进制数(0/1),二进制文件中的字节是分开的!

我们刚刚还说文件有很多类…为啥现在就2类了,如何区分他们呢?


如果用记事本打开不乱码就是文本文件,打开乱码就是二进制文件!

image.png


可以看到jpg是二进制文件,很多文件都是二进制文件!

image.png

像word那些也是二进制文件,因为他们有一些格式,属于富文本,也就是二进制! 只有像那些txt文件才是文本文件!

image.png

目录结构

我们硬盘下的文件都是由文件系统管理,就是我们电脑中的文件

image.png

我们的文件由文件系统管理,就是我们此电脑下的硬盘!

文件是由树形结构管理!采用多叉树的形式进行管理!

image.png


所以通过多叉树的结构管理文件系统!

我们的叶子节点就是一个文件!而非叶子节点就是目录文件!


路径

如果我们要描述一个文件所在的位置,我们可以采用两种描述方式!

这两种描述方式是操作系统给我们提供的路径的方式,定位一个文件的位置!


绝对路径

绝对路径就是电脑我们打开一个文件目录,上方所看到的路径地址!

image.png


D:\java\2022_1_13\src

这里的test.java就是在这个路径里面!

简单说就是如果这个路径第一个是盘符(C/D盘等),那么这个路径就是绝对路径,我们在电脑中任意位置都可以精准的找到这个文件!

就相当于你身份证上的地址!超详细!


相对路径


相对路径,我们学过物理都知道,相对就是相对某个参考系而言,地址所在的位置!


如果我们已经知道了,你的具体某个现地址,所以只要知道你的乡,村就可以找到你的家庭地址了!


也就是我们需要有参考位置!

参考这个目录文件,你所在的路径,就是相对路径!

image.png

假如我们以D:\java\2022_1_13为参考地址也就是基准目录!

那么out文件如何表示呢!


./out这就表示了基准下的out相对路径了!


如果我们要找基准的父文件目录中的文件呢?

image.png

我们通过../的方式找到基准路径的父目录!

../2022_1_12以D:\java\2022_1_13为基准路径表示2022_1_8文件位置!


./ 表示当前目录!

../表示上一级目录!

还有你发现一个小细节没有!

为啥路径可以用/也可以用\呢?


一般情况下用/反斜杠表示路径!


而windows支持用\表示路径!但是也支持/

可以看到windows下输出的路径都是\!!!


/便于我们编程使用,如果我们用/编译器就以为我们使用了转义字符,就比较繁琐!

image.png

如果要使用\我们要对\转义操作!


java文件操作

我们java提供了一个File类,在java.io包下,我们通过这个类就可以完成对文件的操作,首先这个文件对象就描述了一个文件/目录,就可以实现很多功能!


File文件和目录路径名的抽象表示。

image.png


文件系统相关的操作

文件系统相关的操作也就是我们看到的文件系统所具有的操作文件的功能,我们通过java代码也能实现!

image.png

这里可执行的功能,我们通过java代码也都可以实现!

例如:打开文件,删除文件,查看文件大小,日期…一系列关于文件的操作我们都可以进行!


我们java有一组文件操作的API

image.png

image.png

image.png


通过上述的方法就可以对文件进行管理!

我们来演示几个常用的方法:


package file;
import java.io.File;
import java.io.IOException;
public class File1 {
    public static void main1(String[] args) {
        //我们创建一个File对象,传入路径
        File file1 = new File("D:/1.txt");
        File file2 = new File("D:/test.txt");
        //判断该文件是否存在!
        System.out.println(file1.getName()+"是否存在:"+file1.exists());
        System.out.println(file2.getName()+"是否存在:"+file2.exists());
    }
    public static void main(String[] args) {
        File file = new File("D:/test.txt");
        System.out.println("是否可读:"+file.canRead());
        System.out.println("是否可写"+file.canWrite());
        System.out.println(file.isDirectory());
        System.out.println("路径:"+file.getAbsolutePath());
        System.out.println("路径:"+file.getPath());
        System.out.println("是否为目录文件:"+file.isDirectory());
        System.out.println("父目录路径:"+file.getParent());
        System.out.println("父目录文件:"+file.getParentFile());
        //在D盘下创建 4_22.txt文件!
        //只是创建了一个文件对象!在硬盘中并没有文件!
        File newFile = new File("D:/4_22.txt");
        try {
            //在硬盘中创建该文件!
            newFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("文件:"+newFile.getName());
        System.out.println("文件大小:"+newFile.length());
        System.out.println("删除文件:"+newFile.delete());
        System.out.println("文件是否存在:"+newFile.exists());
    }
}

我们D盘下并没有1.txt文件,所以文件不存在!


image.png


我们通过文件对象File调用createNewFile()方法,就可以真正的在我们的计算机中创建该文件!

image.png


//创建目录文件!
public static void main(String[] args) {
        //创建目录!
        File file = new File("./aaa");
        // 创建一级目录 mkdir 方法!
        file.mkdir();
        System.out.println(file.isDirectory());
        // 创建多级目录 mkdirs 方法!
        File file1 = new File("../aaa/bbb/ccc");
        file1.mkdirs();
        System.out.println(file1.isDirectory());
    }


image.pngimage.pngimage.png

image.png

目录
相关文章
|
9天前
|
IDE Oracle Java
java基础教程(1)-Java概述和相关名词解释
【4月更文挑战第1天】Java是1995年Sun Microsystems发布的高级编程语言,以其跨平台特性著名。它介于编译型和解释型语言之间,通过JVM实现“一次编写,到处运行”。Java有SE、EE和ME三个版本,分别针对标准、企业及嵌入式应用。JVM是Java虚拟机,确保代码在不同平台无需重编译。JRE是运行环境,而JDK包含开发工具。要安装Java开发环境,可从Oracle官网下载JDK,设置JAVA_HOME环境变量并添加到PATH。
|
1月前
|
Java
Java String split()方法详细教程
Java String split()方法详细教程
20 0
|
1月前
|
存储 Java 数据处理
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
【2月更文挑战第13天】《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程) 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
62 1
|
17天前
|
Web App开发 前端开发 Java
《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)
【4月更文挑战第1天】 这篇教程介绍了如何使用Selenium Webdriver通过name属性来定位网页元素,作为系列教程的一部分,之前讲解了id定位,后续还会有其他六种定位方法。文中以百度搜索为例,详细说明了定位搜索框(name="wd")并输入关键词“北京宏哥”的步骤,包括手动操作流程、编写自动化脚本以及代码实现。此外,还提供了查看和理解Selenium源码的方法,强调了`open implementation`选项用于查看方法的具体实现。整个过程旨在帮助读者学习Selenium的元素定位,并实践自动化测试。
38 0
|
29天前
|
Web App开发 存储 JavaScript
《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)
【2月更文挑战第17天】本文介绍了Web自动化测试的核心——元素定位。文章首先强调了定位元素的重要性,指出找不到元素则无法进行后续操作。Selenium提供八种定位方法,包括By id、name、class name等。其中,By id是最简单快捷的方式。文章还阐述了自动化测试的步骤:定位元素、操作元素、验证结果和记录测试结果。此外,讨论了如何选择定位方法,推荐优先使用简单稳定的方式,如id,其次考虑其他方法。最后,作者提供了Chrome浏览器的开发者工具作为定位元素的工具,并给出了通过id定位的代码示例。
51 0
|
13天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
【4月更文挑战第4天】本文介绍了link text在自动化测试中的应用。Link text是指网页中链接的文字描述,点击可跳转至其他页面。文章列举了8种常用的定位方法,其中着重讲解了link text定位,并通过实例展示了如何使用Java代码实现点击百度首页的“奥运奖牌榜 最新排名”链接,进入相应页面。如果link text不准确,则无法定位到元素,这说明linkText是精准匹配,而非模糊匹配。文章还提到了partial link text作为link text的模糊匹配版本,将在后续内容中介绍。
35 4
|
11天前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
42 0
|
30天前
|
Web App开发 安全 Java
《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
【2月更文挑战第16天】本文介绍了如何通过查看源码理解Selenium启动Chrome浏览器的过程。首先,展示了启动Chrome的Java代码,包括设置系统属性、创建WebDriver实例、最大化窗口、设置隐性等待、打开网站、获取页面标题以及关闭浏览器。文章还讲解了包(package)、import导入、setProperty设置系统属性、WebDriver接口、driver实例、manage方法、get方法加载网页以及quit方法退出浏览器的基本概念和作用。适合没有Java基础的读者了解Selenium与Java的交互方式。
45 3
|
2天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
24 0