java IO笔记(File)

数据质量管理的一些思考 背景 在近期的项目当中,我们为客户落地实施了数据资产平台。随后,在数据平台中接入了客户子公司的一个业务系统的明细数据。客户希望在我们的数据平台上通过数据探索和数据分析,来挖掘一些业务价值和业务创新点。 当我们拿到数据开始进行一些初步探索的时候,发现导入平台的数据质量存在一定的问题:例如一些用于数据分析的关键字段的值为空、一些本应该有主从关系的数据对应不上、数据分类混乱等。这些问题直接影响到了对... 阅读详情

本篇讲述在Java IO中对文件的一些操作,在java IO中,文件是一种最常见的数据源。因此java IO对其提供了专门的IO流来进行操作。

java提供了一个类来表示文件,这个类就是file类,位于java.io.file。该类的功能十分强大,下面将一一介绍。

首先我们来看看file类的构造方法,在我使用的jdk1.7中,该类一共提供了4个构造方法,分别为:

  1. public File(String pathname) pathname是目标文件的路径,可以使绝对路径,也可以是相对路径。
  2. public FIle(String parent, String child) parent是父文件的路径,child是目标文件的路径,可以使绝对路径,也可以是相对路径。
  3. public File(File parent, String child)parent是父文件对象,child是目标文件的路径,可以使用绝对路径,也是是相对路径。
  4. public File(Url url)url是目标文件的url。这里的url是统一资源定位符,如果不知道的话可以查询一下资料,如今发达的互联网使我们学习东西非常的方便。
File类还提供了一些方法来帮助我们对文件进行操作,下面将列举一些常见的方法:
  1. boolean createNewFile();   创建文件,如果文件存在则返回false,否则返回true,并创建文件。
  2. boolean mkdir();    创建目录。
  3. boolean mkdirs();    创建多级目录。
  4. boolean delete(); 删除文件,如果是文件夹,必须保证是空文件夹才能删除成功。
  5. boolean deleteOnExit();  删除文件,功能基本与delete方法一样,唯一的区别就是该方法不是立即执行,而是等到虚拟机运行结束的时候才真正的删除文件。
  6. boolean canExecute(); 判断文件是否可以执行。
  7. boolean canRead(); 判断文件是否可读。
  8. boolean canWrite(); 判断文件是否科协。
  9. boolean exists(); 判断文件是否存在。、
  10. boolean isDirectory(); 判断文件是否是目录。
  11. boolean isFile(); 判断文件是否是文件(不是目录)。
  12. boolean isHidden(); 判断文件是否是隐藏的。
  13. String getName(); 获取文件名。
  14. String getPath(); 获取文件相对路径。
  15. String getAbsolutePath(); 获取文件绝对路径。
  16. String getParent(); 返回父目录,如果没有则返回null。
  17. long lastModified(); 返回最后一次修改时间,单位为毫秒,可以用Date类进行转换。
  18. long length(); 返回文件的大小,单位是字节。
  19. boolean renameTo(File f); 重命名文件,可以起到移动文件的作用,磁盘的格式影响该方法的成功率。
  20. File[] liseRoots(); 获取机器盘符。
  21. String[] list(FilenameFilter filter);   列出符合过滤器的所有文件名。
通过以上方法我们可以对文件系统进行丰富的操作,下面将通过代码一一展示。
private void initFile() throws Exception {
		// public File(String pathname)pathname使用绝对路径
		file1 = new File("E:\\workspaceforlibgdx\\IOStudy\\src\\file\\test.txt");
		// public File(String pathname)pathname使用相对路径
		file = new File(".\\src\\file\\test.txt");
		// public File(String parent, String child)
		file = new File("E:\\workspaceforlibgdx\\IOStudy\\src\\file","test.txt");
		// public File(URI uri)
		URI url = new URI("file:///e:/workspaceforlibgdx/IOStudy/src/file/test.txt");
		file = new File(url);
		
	}

我在指定目录下放下了test.txt文本,上面的四种初始化方式均能得到,指定文件的File对象。

private void doCreateAction() throws Exception{
		System.out.println("========================doCreateAction===============================");
		//在下述路径下创建文件,因为目标路径下没有该文件,所以返回true,并创建对应文件。
		file = new File("E:\\workspaceforlibgdx\\IOStudy\\src\\file\\create.txt");
		flag = file.createNewFile();
		System.out.println(flag);
		//在下述路径下创建文件夹,因为目标路径下没有该文件夹,所以返回true,并创建对应文件夹。
		file = new File("E:\\workspaceforlibgdx\\IOStudy\\src\\file\\file1");
		flag = file.mkdir();
		System.out.println(flag);
		//在下述路径下创建多级文件夹,因为目标路径下没有这些文件夹,所以返回true,并创建对应文件夹。
		file = new File("E:\\workspaceforlibgdx\\IOStudy\\src\\file\\file1\\file2\\file3");
		flag = file.mkdirs();
		System.out.println(flag);
	}


上述方法会在指定位置创建相应的文件和目录,执行后,可以看到如下打印:





private void doDeleteAction() throws Exception{
		System.out.println("=================================doDeleteAction====================================");
		//delete方法可以删除指定的文件,删除文件夹时,必须保证该文件是空文件夹,否则删除失败。
		//deleteOnExit方法同delete方法一样用于删除文件,唯一区别就是,delete方法是执行时就会删除,而该方法则是在虚拟机运行结束时才会删除。
		file = new File("E:\\workspaceforlibgdx\\IOStudy\\src\\file\\delete.txt");
		file.createNewFile();
		flag = file.delete();
		System.out.println(flag);
		file.deleteOnExit();
	}


执行上述代码可以删除指定位置的文件,执行后,可以看到如下打印:


private void doQueryAction() {
		System.out.println("=====================================doQueryAction==================================");
		file = new File("E:\\workspaceforlibgdx\\IOStudy\\src\\file");
		//getName方法获取文件名。
		System.out.println("file.getName:"+file.getName());
		//getPath方法获取相对路径。
		System.out.println("file.getPath:"+file.getPath());
		//getAbsolutePath方法获得绝对路径。
		System.out.println("file.getAbsolutePath:"+file.getAbsolutePath());
		//getParent方法获得父文件的路径。
		System.out.println("file.getParent:"+file.getParent());
		//lstModified方法获得最后一次修改文件的时间,返回long型,可以通过Date类进行转换。
		System.out.println("file.lastModified:"+new Date(file.lastModified()));
		//length方法返回文件的大小,单位是字节。
		System.out.println("file.length():"+file.length());
		//renameTo方法可以将该文件重命名或者移动位置,但磁盘格式有时候会影响该方法是否能执行成功
		System.out.println("file.length:"+file.renameTo(file));
		//listRoots方法可以获取系统盘符
		System.out.println("File.listRoots==================");
		File[] files = File.listRoots();
		for(File file : files){
			System.out.println(file.getPath());
		}
		//listFiles方法是列出指定目录下的所有文件
		System.out.println("file.listFiles==================");
		File[] files1 = file.listFiles();
		for(File file : files1){
			System.out.println(file.getPath());
		}
		//list方法师列出指定目录下所有文件名
		System.out.println("file.list==================");
		String[] lists = file.list();
		for(String list : lists){
			System.out.println(list);
		}
		//list(new FilenameFilter)方法可以添加过滤器来对返回的文件名践行筛选,下面是过滤出包含txt的文件
		System.out.println("file.list(new filenamefilter)==================");
		String[] lists1 = file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				if(name.contains("txt")){
					return true;
				}
				return false;
			}
		});
		for(String list : lists1){
			System.out.println(list);
		}
	}


执行上述代码,可以对文件或者目录进行一些信息的查询,执行后,可以看到如下打印:




public void doJudgeAction(){
		System.out.println("=================================doJudgeAction====================================");
		System.out.println("file1.canExecute:"+file1.canExecute());
		System.out.println("file1.canRead:"+file1.canRead());
		System.out.println("file1.canWrite:"+file1.canWrite());
		System.out.println("file1.exists:"+file1.exists());
		System.out.println("file1.isDirectory:"+file1.isDirectory());
		System.out.println("file1.isFile:"+file1.isFile());
		System.out.println("file1.isHidden:"+file1.isHidden());
		System.out.println("file1.isAbsolute:"+file1.isAbsolute());
	}
执行上述代码,可以对文件进行一些判断,执行后得到如下打印:



通过上述的方法,我们再加以修改,完全可以写出一些好玩的东西,如写一个文件查找器亦或是一个文件删除工具。

public void doQueryAllAction() {
		Scanner scanner = new Scanner(System.in);
		String path = scanner.next();
		File root = new File(path);
		if (root.exists()) {
			queryTool(root, 0);
		} else {
			System.out.println("you type a wrong path");
		}
		scanner.close();
	}

	private ArrayList<File> queryTool(File file, int lev) {
		if (file.isFile()) {
			list.add(file);
			System.out.println("文件"+getSymbols(lev,false) + file.getName());
		} else if (file.isDirectory()) {
			System.out.println("目录"+getSymbols(lev,true) + file.getName());
			lev++;
			File[] files = file.listFiles();
			for (File temp : files) {
				queryTool(temp, lev);
			}
		}
		return list;
	}

	private String getSymbols(int number,boolean isfile) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < number; i++) {
			if(isfile){
				sb.append("-");
			}else {
				sb.append("-");
			}
		}
		return sb.toString();
	}

执行doQueryAllAction方法,可以根据输入的路径,罗列出指定路径下的所有文件,执行后得到如下打印:



private boolean doDeleteAllAction(){
		doQueryAllAction();
		for(File file : list){
			System.out.println("文件【"+file.getName()+"】已删除");
			file.delete();
		}
		return true;
	}

执行上述方法可以删除输入路径下的所有文件,执行后得到如下打印:


以上就是对于java.io中file类的一些操作了,是不是很神奇呢,java完全可以模拟我们平常对文件的一些操作,创建,移动,删除等等,下面要讲的就是如何往文件中写入数据了,这里就要用到流了。

//除了使用FileReader还可以使用FileInputStream进行文件读取,当然你还可以使用RandomAccessFile来进行选择性读取。
	private void doReadAction() throws Exception {
		Scanner scanner = new Scanner(System.in);
		String path = scanner.next();
		File root = new File(path);
		StringBuffer sb = new StringBuffer();
		if (root.isFile()) {
			FileReader fr = new FileReader(root);
			char[] temp = new char[1024];
			while (fr.read(temp) != -1) {
				sb.append(temp);
			}
			fr.close();
			scanner.close();
			System.out.println(sb.toString());
		}
	}

通过上述方法,可以读取指定路径下的文件(暂指文本文件),执行后,得到如下打印:


private void doWriteAction() throws Exception {
		Scanner scanner = new Scanner(System.in);
		String path = scanner.next();
		File root = new File(path);
		if(root.isFile()){
			FileWriter fw = new FileWriter(root);
			fw.write("java io操作 之 文件  ");
			System.out.println("文件写入完成");
			fw.close();
			scanner.close();
		}
	}

执行上述方法可以向指定文件内写入内容,执行后得到如下打印:


关于java io 文件的操作就暂且说到这儿吧,下面将要讲述管道的内容。

零基础入门篇③ PyCharm使用指南(个性化设置、开发必备插件、常用快捷键) Python从入门到精通👉零基础入门篇③ 阅读详情

相关推荐

Unity物理引擎实战:从刚体重心到碰撞体,打造真实不倒翁交互

刚体(Rigidbody)是Unity物理系统的核心组件,它定义了游戏对象的物理属性,如质量、阻力和碰撞响应。其原理基于牛顿力学,通过物理引擎(如PhysX)实时计算物体的运动状态。在游戏开发中,刚体的价值在于能够模拟真实世界的物理行为,为玩家提供沉浸式的交互体验。碰撞体(Collider)则定义了物体的形状边界,用于检测与其他物体的接触。通过精细调整刚体的重心(Center of Mass)和碰撞体形状,开发者可以模拟出各种有趣的物理现象,例如低重心物体的动态平衡。这在休闲游戏、物理玩具模拟等场景中尤为实

weixin_33976326的博客 355

java.io.File类

java.io.File类 文件和目录路径名的抽象表示形式 java把电脑中的文件和文件夹(目录)封装为了一个File类,可使用File类对文件和文件夹进行操作 可使用File类的方法实现: 创建一个文件或文件夹 删除文件或文件夹 判断文件或文件夹是否存在 对文件夹进行遍历 获取文件夹的大小 File类是一个与系统无关的类,任何的操作系统都可以使用File类中的方法 静态成员变量 String p...

qq_41628448的博客 268

时序约束实战:从setup/hold到时钟路径约束的深度解析

本文深度解析数字设计中的时序约束实战,重点探讨如何从setup/hold检查的核心原理出发,理解并应用时钟路径约束。文章通过剖析Path Requirement的计算逻辑,结合同频、倍频及异步时钟域等典型场景,提供了从解读时序报告到编写、调试SDC约束的系统方法,帮助工程师有效应对复杂SoC设计中的时序收敛挑战。

weixin_29291185的博客 105

记录一个坑: java.io.FileNotFoundException

今天在公司撸代码的时候, 有一个需求是去远端服务器下载到本地之后,然后读取本地下载的文件,然后进行操作, 代码如下: 然后就提示: 然后我看了下 文件是真实存在的,路径也是对得, 咋回事 ,百撕不得骑姐后面仔细一想路径没有问题,那么一定是出现在文件名称上 哎 一看文件名称也是对的,然后显示下文件的后缀名看下: 原来的文件夹后缀名选择默认是不展示的, 我在创建文件的时候加了个后缀名.txt, 本来是test.txt 现在是test.txt.txt ,真是离谱他妈给离谱他家开门,离谱到家了 ...

你我一起进步 6058

Xilinx Aurora 8B/10B IP核详解和仿真

Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。

weixin_43354598的博客 1万+

UFS电源管理实战:如何优化手机存储的功耗与性能(附实测数据)

本文深入探讨了UFS电源管理的实战优化策略,旨在平衡手机存储的功耗与性能。通过解析UFS核心电压域与工作状态,重点介绍了通过动态调整bActiveICCLevel(活动电流等级)来实现精细控制,并结合实测数据与场景驱动的智能策略,为Android系统与硬件工程师提供了降低功耗、提升流畅度的有效方法。

weixin_29214559的博客 504

用Java进行文件操作时,报出“at java.io.FileOutputStream.<init>(Unknown Source)”错误

我用Java编写文件管理器时,要写一个文件复制的函数,结果遇到“C:\Users\Administrator\eclipse-workspace\project1\bin\Folderdir3\dir2\FileDemo.java (系统找不到指定的路径。)at java.io.FileOutputStream.open0(Native Method)at java.io.FileOutputSt...

weixin_41298964的博客 1万+

Rust练手:从零手撸RISC-V架构虚拟机(一)(附完整代码)

使用Rust实现一个简单的RISC-V架构的CPU雏形,支持add,sub,addi三个指令。

qq_45983373的博客 2569

Java文件IO操作:File类的相关内容

Java文件操作:File的介绍及使用

NorthSmile的博客 1243

重塑计算的五层蛋糕:解读黄仁勋CES2026演讲背后的AI新秩序与物理世界

2026年CES演讲揭示AI新纪元:从语言模型到物理智能 NVIDIA CEO黄仁勋在2026年CES演讲中描绘了计算产业的根本性变革。核心突破包括: 计算范式转移:从指令执行转向意图理解,智能体系统崛起 物理AI突破:发布Cosmos世界模型,通过合成数据训练AI理解物理定律 全新VeraRubin计算平台:6芯片协同设计,解决摩尔定律放缓与AI需求增长的矛盾 自动驾驶革命:推出具备推理能力的Alpamayo模型,实现L4级自动驾驶 演讲标志着AI正从数字世界迈向物理世界,NVIDIA通过全栈布局,正在重

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 1273

PCL:读写pcd点云的两种方式

本文介绍了PCL读写点云的两种方式:PCDReader,PCDWriter;loadPCDFile,savePCDFile.

孙悟空 1万+

Java笔记(Stream、File、IO流、字符集、编码解码)

Java笔记(Stream、File、IO流、字符集、编码解码)

LLM | Agent | RAG | Java 2477

OpenClaw进阶实战(二十五):抖音企业号——私信回复与视频评论分析

摘要:本文介绍抖音企业号自动化运营方案,突破抖音强风控体系的技术挑战。针对内容生产、私信互动和账号矩阵三大场景,提出混合架构解决方案: 私信自动化:结合关键词触发与随机延迟(45秒±15),实现拟人化回复,支持价格咨询/商务合作等高优先级消息识别 混合技术栈:官方API(合规)+真机RPA(覆盖长尾需求)+AI辅助生成(脚本→剪辑→发布闭环) 安全策略:通过设备指纹模拟、行为间隔随机化和内容差异化处理规避风控,提供每日200条的安全操作阈值。配套OpenClaw技能实现一键部署,包含cookie配置、回复规

PeterPan的博客 142

JAVA基础学习笔记-day15-File类与IO流

File类及本章下的各种流,都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。File对象可以作为参数传递给流的构造器。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。

天才在左,疯子在右,而我只想做个不折不扣的乐天派 1169

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java中File IO流的笔记

1.File文件的属性和操作 boolean exists( ) 判断文件或目录是否存在boolean isFile( ) 判断是否是文件boolean isDirectory( )判断是否是目录String getPath( )返回此对象表示的文件的相对路径名String getAbsolutePath( ) 返回此对象表示的文件的绝对路径名String getName(...

adam9988888的博客 153

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java笔记 IO —— File

File file2 = new File(“D:\java”,“a.txt”); System.out.println(file2); //D:\java\a.txt //public File(File parent,String child) //根据一个父的File对象和一个子文件或目录得到一个File对象 File file3 = new File(“D:\java”); //父的File对象 File file4 = new File(file3,“Demo”); //子的目录 System.o

m0_69526738的博客 409

Java笔记 - File & IO

文章目录文件构造方法File类判断和获取递归遍历目录(重要)字节流IO流两个基类创建字节流常用方法换行和追加写入异常处理读数据使用数组缓存读写复制 (重要)字节缓冲流字符流编码表字符流的编码方法读写数据FileReader 和 FileWriter (便捷类)字符缓冲流特有功能异常的处理特殊操作流标准输入流标准输出流打印流字符打印流 PrintWriter序列化流序列化Serializable 序...

ECNU第一菜鸡的博客 931

笔记-java之File类、IO流

​​学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:想系统/深入学习某技术知识点…一个人摸索学习很难坚持,想组团高效学习…想写博客但无从下手,急需写作干货注入能量…热爱写作,愿意让自己成为更好的人……...

weixin_49141743的博客 244

【Java学习|黑马笔记|Day20】File(构造方法、成员方法)、IO流(字节输入出流、字符输入出流、文件拷贝)及其相关练习

本文总结了Java中File类和IO流的学习笔记,重点介绍了File对象的基本用法。主要内容包括:File类的构造方法(通过字符串路径、父子路径组合创建对象)、常用成员方法(判断文件属性、获取信息、创建删除文件/文件夹、遍历目录等)。文中还提供了多个实用示例代码,如创建多级目录、查找特定类型文件等。File类可用于表示文件或文件夹路径,无论路径是否存在,是Java处理文件操作的基础类。笔记适合Java初学者参考,帮助掌握基本的文件操作技能。

2401_87144364的博客 734

java-File、递归、IO流笔记

笔记

m0_59904957的博客 279

Java File IO学习笔记

声明:以下转载自:Java中的File文件类详解 文件操作在Java的io操作中占有十分重要的地位,本文从以下几个方面来接受Java中对文件的操作。 1.Java中新建或者删除一个文件,文件夹以及createNewFile(),delete(),mkdir(),mkdirs()函数的使用。 2. 判断文件的函数:exists(),isFile(),isAbsolute(),i...

F1655102的博客 249

java Io File类 笔记

import java.io.File; import java.io.IOException; import java.util.Date; import org.junit.Test; /**  *   * IO流   *   * 程序运行在jVM虚拟机中 ,虚拟机存在 电脑内存中,电脑断电  内存东西清空,   *   *  java程序有时需要从 电脑磁

51互联云 285

Java学习笔记 文件File与IO流

在说字符流与字节流之前,先说一下文件,因为它们大部分时候都在操作文件 文件File 可以把文件File的对象理解成一个句柄,用这个抽象的句柄来操作实际文件 文件对象句柄的创建 /*File类常用的有两个构造函数,一个传String:pathname, 可以是相对路径, 也可以是绝对路径;另一个传String:parent与String:child。 */ //比如想在C盘下创建一个a.txt的文件句柄 File file = new File("c:\\a.txt"); //比如在C:\\heihe.

LangWeiXian_的博客 355

【JAVA IO】_File类笔记

【JAVA IO】_File类笔记 分类: Java 【JAVA IO】_File类笔记 本章目标: 掌握File类的作用 可以使用File类中的方法对文件进行操作 File类 在整个io包中,唯一表示与文件有关的类就是File类。使用File类可以进行创建删除文件等常用操作。要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下

geili_178的专栏 377

java file io流_Java 学习笔记 IO流与File操作

可能你只想简单的使用,暂时不想了解太多的知识,那么请看这里,了解一下如何读文件,写文件读文件示例代码File file = new File("D:\\test\\t.txt");//这里的有两条斜杠,其实实际的路径为D:\test\t.txt,多的那一条斜杠是转义用的InputStreamReader inputStreamReader = new InputStreamReader(new F...

weixin_33520865的博客 104
上一篇: java IO笔记(IO简述)
下一篇: java IO笔记(PipedInputStream/PipedOutputStream)
moonfish0607
博客等级 码龄11年 26粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moonfish0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值