Java中操作文件(一)

news2025/1/10 2:08:18

目录

一、引入

二、File概述

2.1、属性 

2.2、构造方法 

2.3、方法 

2.4、代码示例

示例1

示例2 

示例3 

示例4

示例5

示例6

示例7 

示例8


一、引入

文件是操作系统中的重要概念,Java作为一个跨平台语言,可以针对不同的操作系统处理文件。比如说windows与linux组织文件的方式是不同的,Java对不同系统的处理文件的API做了一定的封装,在jdk中提供了一个FIie类,程序员可以利用这个类来操作文件。

二、File概述

2.1、属性 

修饰符及类型属性说明
static StringpathSeparetor依赖于系统的路径分隔符,String类型的表示
Static char pathSeparetor依赖于系统的路径分隔符,char类型来表示

2.2、构造方法 

签名

说明

File(File parent,String child)根据父目录创建一个新File实例
File(String pathname)根据文件路径创建一个新的实例,路径可以是绝对路径或者相对路径
File(String parent,String child)根据父目录+孩子文件路径,创建一个新的File实例,父目录用路径表示

2.3、方法 

修饰符及返回值类型方法签名说明
StringgetParent()返回File对象的父目录文件路径
String getName()返回File对象的纯文件名称
String getPath()返回File对象的文件路径
String getAbsolutePath()返回File对象的相对路径
String getCanonicalPath()返回File对象的修饰过的绝对路径
booleanexists()判断File对象描述的文件是否真实存在
booleanisDirectory()判断File对象代表的文件是否是一个目录
booleanisFile()判断File对象代表的文件是否是一个普通文件
booleancreateNewFile()根据File对象,自动创建一个空文件。成功创建后返回true
booleandelete()根据File对象,删除该文件,成功删除后,返回true
voiddeleteOnExit()根据File对象,标注文件将被删除,删除动作会到JVM运行结束时才会进行
String[]list()返回File对象代表的目录下的所有文件名
File[]listFiles()返回File对象代表的目录下的所有文件,以File对象表示
booleanmkdir()创建File对象所代表的目录
booleanmkdirs()

创建File对象所代表的目录,如果有必要,会创建中间目录

booleanrenameTo(File name)进行文件改名,也可以视为我们平时的剪切、粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

2.4、代码示例

示例1

创建文件对象

import java.io.File;

/**
 * 常见的创建文件的不同的构造方法
 */
public class Exe_02 {
    public static void main(String[] args) {
        File file=new File("D:\\study");
        System.out.println(file);
        File file1=new File(file,"document\\小黑子珍藏集");
        System.out.println(file1);
        File file2=new File("D:\\study\\document\\小黑子珍藏集");
        System.out.println(file2);
        File file3=new File("D:\\study\\document","小黑子珍藏集");
        System.out.println(file3);
    }
}

new File()文件创建方式并不要求文件是真实存在的。想要验证可以加上文件名.exists()打印出False。

示例2 

打印文件路径 

import java.io.File;
import java.io.IOException;

/**
 * 文件路径
 */
public class Exe_03 {
    public static void main(String[] args) throws IOException {
        System.out.println("=======用绝对路径创建文件=======");
        File file=new File("D:/蔡徐鸡/唱/跳/rap");
        //获取文件信息
        System.out.println(file.getPath());//文件路径
        System.out.println(file.getParent());//父目录文件路径
        System.out.println(file.getName());//纯文件名称
        System.out.println(file.getCanonicalFile());//修饰过的相对路径
        System.out.println(file.getAbsoluteFile());//绝对路径

        System.out.println("=======用相对路径创建文件=======");
        File file1=new File("./rap");
        //获取文件信息
        System.out.println(file1.getPath());//文件路径
        System.out.println(file1.getParent());//父目录文件路径
        System.out.println(file1.getName());//纯文件名称
        System.out.println(file1.getCanonicalFile());//修饰过的相对路径
        System.out.println(file1.getAbsoluteFile());//绝对路径
        System.out.println(file1.exists()); //文件并不是真实存在的
    }
}

file.getCanonicalFile():修饰过的绝对路径,获取绝对路径通常使用的方法。 

示例3 

文件是否存在,如果文件存在,那么就不能重复创建文件 


import java.io.File;
import java.io.IOException;

/**
 *文件是否存在,如果文件存在,就不能重复创建
 */
public class Exe_04 {
    public static void main(String[] args) throws IOException {
        //创建File对象
        File file=new File("./test.txt");
        //判断文件是否真实存在
        System.out.println("文件是否真实存在"+file.exists());
        //判断文件是不是一个文件
        System.out.println("文件是不是同一个文件"+file.isFile());
        //判断文件是不是同一个目录
        System.out.println("文件是不是同一个目录"+file.isDirectory());

        //创建一个真实的文件
        System.out.println("文件是否创建成功"+file.createNewFile());
        //判断文件是否真实存在
        System.out.println("文件是否存在--》"+file.exists());
        //判断文件是不是一个文件
        System.out.println("文件是不是一个文件"+file.isFile());
        //判断文件是不是一个目录
        System.out.println("文件是不是一个目录"+file.isDirectory());
        //打印文件路径
        System.out.println("文件绝对路径"+file.getCanonicalFile());
    }
}

 

示例4

删除文件


import java.io.File;

/**
 * 删除文件对象
 */
public class Exe_05 {
    public static void main(String[] args) {
        //创建文件对象
        File file=new File("./test.txt");
        if(file.exists()){
            System.out.println("删除文件"+file.delete());
        }
    }
}

示例5

创建目录


import java.io.File;

//创建目录
public class Exe_06 {
    public static void main(String[] args) {
        //创建文件对象
        File file=new File("D:/study/小黑子");
        //创建目录
        System.out.println("创建目录"+file.mkdir());
        System.out.println("==============");
        //创建File对象
        File file1=new File("D:/study/小黑子/他真的很努力/iKun");
        //创建多级目录
        System.out.println("创建多级目录"+file1.mkdirs());
    }
}

示例6

获取文件名和目录名信息

/**
 * list和listFiles
 */

import java.io.File;
import java.util.Arrays;

public class Exe_07 {
    public static void main(String[] args) {
        //创建File对象
        File file=new File("D:/study");
        //获取所有文件信息
        String[] list=file.list();
        System.out.println("文件名和目录名String类型"+ Arrays.toString(list));
        //获取所有文件信息
        File[] files=file.listFiles();
        System.out.println("文件名和目录名File类型"+Arrays.toString(files));
    }
}

 

示例7 

文件重命名

import java.io.File;

/**
 * 文件重命名
 */
public class Exe_08 {
    public static void main(String[] args) {
        //创建两个File对象
        File sourceFile=new File("D:study/java/练习时长两年半");
        File targetFile=new File("D:study/java/你们为什么不放过他");
        //调用重命名方法
        System.out.println("文件重命名"+sourceFile.renameTo(targetFile));
    }
}

示例8

判断文件是否可读可写

/**
 * 判断文件是否可读可写
 */

import java.io.File;

public class Exe_09 {
    public static void main(String[] args) {
        File file=new File("D:/study/小黑子/鸡哥写真集.docx");
        System.out.println("是否可读"+file.canRead());
        System.out.println("是否可写"+file.canWrite());
    }
}

可以将“鸡哥写真集.docx” 的属性改为只读类型

 再次强调一下File类只是Java层面的一个对象,对应的文件并不一定要在系统中存在要区分开Java对象和系统文件的区别

File只是对文件信息进行操作,创建,获取,删除,列表,重命名但没有对文件内容进行操作--读取和写入(Input/Output) IO.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

83、基于STM32单片机录音机录音笔语音存储回放TF卡TFT屏系统设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

单片机主芯片选择方案 方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元&a…

Springboot 接口对接文件及对象

两个sprongboot项目实现文件对接,在传入文件同时传递其他对象信息,比如接口如下 一、创建文件 例如在D盘下创建1.txt,里边写入内容 2、传送方代码实现 import org.springframework.core.io.FileSystemResource; import org.springframework.…

保护您的密码安全:ADSelfService Plus防止密码被盗

在数字时代,密码的安全性至关重要。随着黑客攻击的不断增加,我们必须采取必要的措施来保护我们的密码免受盗窃和滥用。在这篇文章中,我们将介绍ADSelfService Plus,这是一种强大的密码管理和自助服务解决方案,可以帮助…

反向代理缓存服务器 Squid 、Nginx、CDN部署讲解

目录 一、Squid 反向代理1.1 概念1.2 工作机制1.3 搭建 二、 Nginx 反向代理缓存 一、Squid 反向代理 1.1 概念 如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 Web 服务器请求资源&a…

三者ICG聚甲基菁染料:ICG COOH,ICG NHS,ICG NH2,具有良好的水溶性

一、ICG-COOH--CAS号:181934-09-8 ICG-COOH(吲哚菁绿羧酸)中末端羧酸在活化剂(如EDC或HATU)存在下可与伯胺基反应,形成稳定的酰胺键。ICG是一种带负电荷的聚甲基菁染料,具有良好的水溶性&#…

远程服务器ubuntu安装Jupyter Lab详细教程

不用打开电脑,不用启动anaconda,随时随地,公交地铁上使用手机输入网站就能启动jupyter notebook进行代码编写、数据分析,着实是很方便。在你成功白嫖一台服务器之后,可以按照下面的教程,手把手教你配置一个…

car music

正常车载U盘即可 车载不可用的U盘 车载需要改进遍历文件夹

【机器学习核心总结】什么是BP反向传播算法

什么是BP反向传播算法 神经网络是个好工具,但就像有的刀削铁如泥,有的却只能拿来切豆腐。 真正决定神经网络好不好用的是神经元之间连接的权重和神经元的阈值。 如何确定这些数字,大部分时间我们都在使用反向传播,也就是常说的B…

Opencv图片样本预处理

前因 最近想学学,OPENCV识别物体,但是处理图片正样本时过于繁琐, 遂自己开发了工具,来处理样本图片,基于QT,文末附下载链接 程序 功能 一共有两个功能,一个是处理负样本,一个处理…

UE 5.1.1 引擎源码下载 执行Setup报错解决

Upcoming Disruption of Service Impacting Unreal Engine Users on GitHub - Announcements - Epic Developer Community Forums 文件下载地址:https://github.com/EpicGames/UnrealEngine/blob/9763f4c8f3fb047be1a4b5fee2b080587c1307a1/Engine/Build/Commit.gi…

React之hooks

Hooks函数 1.useState():状态钩子。纯函数组件没有状态,用于为函数组件引入state状态, 并进行状态数据的读写操作。 const [state, setState] useState(initialValue); // state:初始的状态属性,指向状态当前值,类似…

字节测试8年,肝到50W就剩这份学习笔记了····

在字节工作了8年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你开发框架与平台的时候,熬到年薪50W也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记…

如果你的idea启动突然卡住,那么请看我这篇文章

# 情景 我的idea什么操作都没做就突然运行不起来了,其他的操作都可以,只要运行就卡住1、不要相信网上文章的修改本机hosts文件 2、不要相信网上文章清理idea的cache 3、不要相信网上文章修改编译配置# 操作 只有两张图,如下

测试用例设计简单吗?简单!但你有可能栽在这5道S级设计题上!

很多人不知道写测试用例有什么用,而仅仅是像工具人一样,在每次提测之前,把测试用例照着需求文档抄一遍,仿佛像是走个过场。 开发提测之后,就照着测试用例点点点,可能一天就走完用例了,开发代码…

antv/g2图表自定义tooltip展示

默认图 效果图 需要自定义tooltip标题以及根据是字段显示名称和数值 chart.interval().transform({ type: stackY }).data(dataList).encode(y, value).encode(color, name).tooltip({title: (d) >办理状态, //标题设置}).tooltip((d, // 每一个数据项index, // 索引data…

首家!阿里云完成数据可视化服务能力评估

2023 年 5 月 22 日,在中国信通院组织的首批数据可视化服务能力成熟度评估中,阿里云计算有限公司(以下简称“阿里云”)顺利完成了数据可视化服务能力成熟度评估的全部内容,成为首家完成此评估的企业。 标准介绍 中国…

想知道好用的音频翻译软件有哪些?

随着全球化进程的加速和语言交流需求的增长,音频翻译软件正日益受到关注和应用。这样的软件以其高效、准确的翻译能力以及广泛的应用场景赢得了青睐。音频翻译软件具备诸多优势,如通过语音输入实时转化为文字输出,提供了便捷的写作工具&#…

[每日一水] Latex Tikz foreach 循环嵌套

\documentclass{article} \usepackage{tikz} \begin{document} \begin{tikzpicture} \foreach[count\i] \x in {20,18,...,2}\foreach[count\j] \y in {20,18,...,2}\node at (\i,\j) {\x \y}; \end{tikzpicture} \end{document}\node at (\i,\j) {\x \y}; 就是写文本的意思

Linux——统信UOS(v20-1060a)部署.net core项目

部署.net core之前,请先确定已经安装了运行环境 Linux安装.net core环境 新建一个用于测试的 .net core web 项目 直接发布到文件夹,目标运行时选择 linux-64,这里根据你自己的操作系统的运行环境选择。 先点击完成,后面再设置参…

2023容器网络趋势:CNI网络插件逐渐普及,Kube-OVN受欢迎度持续攀升

今年,Kube-OVN 社区联合OSCHINA、云原生社区共同发起了《2022-2023容器网络使用情况调研》,得到了大批K8s/容器网络技术人员的关注。 本调研旨在更加直观地了解各行业企业容器网络的使用现状,以及Kube-OVN在社区用户中的使用情况,…