I/O操做总结(二)
文件的操作
这一节我们来讨论关于文件自身的操作
不浪费唾沫了,用代码说话……
实例1:创建文件对象
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import java.io.File;public class Demo { public static void main(String[] args) { //创建要操作的文件路径和名称 //其中,File.separator表示系统相关的分隔符,Linux下为:/ Windows下为:\\ //path在此程序里面代表父目录,不包含子文件 String path = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator; //childPath在此程序里面代表子目录,包含子文件 String childPath = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator + "demo.txt"; //用父目录和子文件分隔的方式构造File对象 //也可以写成 new File("/home/siu/work","test.txt"); File f1 = new File(path,"test.txt"); //使用绝对路径来构造File对象 //也可以写成new File("/home/siu/work/demo.txt"); File f2 = new File(childPath); //创建父目录的文件对象 File d = new File(path); //使用已有父目录对象和子文件构建新的File对象 File f3 = new File(d,"hello.txt"); System.out.println("f1的路径" + f1); System.out.println("f2的路径" + f2); System.out.println("f3的路径" + f3); }} |
编译后,显示各个File对象所指向的绝对路径

实例2:创建和删除文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.io.File;import java.io.IOException;public class Demo { public static void main(String[] args) { String Path = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator + "demo.txt"; File f = new File(Path); try { /*因为创建和删除文件涉及到底层操作,所以有可能会引发异常*/ //如果创建成功则会返回true //如果已存在该文件,则创建不成功,返回flase,别以为会覆盖 System.out.println("创建文件:" + f.createNewFile()); //删除文件,成功返回true,否则返回flase System.out.println("删除文件:" + f.delete()); //此方法表示在虚拟机退出时删除文件 //原因在于:程序运行时有可能发生异常造成直接退出 //清理残余很有必要~! f.deleteOnExit(); } catch (IOException e) { e.printStackTrace(); } }} |
你看,创建成功,所以返回true,因为已经创建好了,所以删除也能成功

实例3:文件的判断和测试
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import java.io.File; public class Demo { public static void main(String[] args) { String Path = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator + "Demo.txt"; File f = new File(Path); //判断文件是否可执行 System.out.println("f是否可执行:" + f.canExecute()); //判断文件是否存在 System.out.println("f是否存在:" + f.exists()); //判断文件是否可读 System.out.println("f是否可读:" + f.canRead()); //判断文件是否可写 System.out.println("f是否可写:" + f.canWrite()); //判断文件是否为绝对路径名 System.out.println("f是否绝对路径:" + f.isAbsolute()); //判断文件是否为一个标准文件 System.out.println("f是否为标准文件:" + f.isFile()); //判断文件是否为一个目录 System.out.println("f是否为目录:" + f.isDirectory()); //判断文件是否隐藏 System.out.println("f是否隐藏:" + f.isHidden()); } } |
这里使用不同的文件做测试便可,设置文件属性什么的也很简单
需要注意的是,如果使用isFlie()和isDirectory()进行测试,则先要确定文件对象是否已经创建

实例4:创建目录
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.io.File;public class Demo { public static void main(String[] args) { String path = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator; //path在此处作为父目录存在 File f1 = new File(path,"/abc"); File f2 = new File(path,"/d/e/f/g"); //创建一个目录 System.out.println(f1.mkdir()); //递归创建目录 System.out.println(f2.mkdirs()); } } |
注意看路径

实例5:获取文件信息
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.io.File;public class Demo { public static void main(String[] args) { String path = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator + "demo.txt"; File f = new File(path); //返回文件的绝对路径 //此处返回值为String System.out.println("f的绝对路径名:" + f.getAbsolutePath()); //返回文件的绝对路径 //此处返回值为File System.out.println("f的绝对路径对象:" + f.getAbsoluteFile()); //返回文件或目录的名称 System.out.println("f的名称:" + f.getName()); //返回文件的相对路径 //构造函数中封装的是什么路径,就返回什么路径 System.out.println("f的路径:" + f.getPath()); //返回父目录的路径 //如果在构造函数中的路径不是绝对路径,那么此处返回null System.out.println("f的父目录:" + f.getParent()); } } |
这些都是比较常用并且功能类似的方法,至于不常用的信息获取参考API即可

实例6:列出文件系统的根目录
|
1
2
3
4
5
6
7
8
9
10
11
12
|
import java.io.File;public class Demo { public static void main(String[] args) { //listRoots()是一个静态方法,返回文件数组 File[] files = File.listRoots(); //foreach循环打印File对象 for (File x : files) { System.out.println(x); } }} |
因为本地环境是Linux,所以根目录只有一个 /,如果是Windows就能列出你的所有盘符

实例7:列出目录下的所有文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.io.File;public class Demo { public static void main(String[] args) { String path = File.separator + "opt" + File.separator; File f = new File(path); //方式一:list() //返回一个包含指定目录下所有文件名的字符串数组 //如果不是一个目录则返回null String[] files = f.list(); for (String x : files) { System.out.println(x); } //方式二:listFiles() //返回File数组 /* File[] files = f.listFiles(); for (File x : files) { //如果需要包含路径,则直接打印x即可 System.out.println(x.getName()); } */ }} |
两者都是返回目录下的所有文件名,但是第二种方式更实用,为递归列出文件做铺垫

实例8:递归列出目录下所有文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.io.File;public class Demo { public static void main(String[] args) { String path = File.separator + "opt" + File.separator; File f = new File(path); //调用下面的递归方法 print(f); } //用递归的方式打印目录列表 public static void print(File f) { if(f.isDirectory()){ File[] files = f.listFiles(); for(File x : files) { print(x); } } else { System.out.println(f); } }} |
好吧,打印内容太多了,意思意思就行了

I/O操做总结(二)的更多相关文章
- 使用robotframework做接口测试二——处理响应数据
初使用RequestsLibrary做接口测试时,你会不会感到困惑,为什么会有${resp.content}, ${resp.status_code}这样的写法,这个status_code什么鬼,f5 ...
- 还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠
相比于从零开始构建全套信息化系统,基于成熟的ERP等行业软件做二次开发是更多中大型企业应对个性化软件需求的首选方案.如何在二开模块中,可靠地对成品软件的数据库进行读写操作,以满足单据自动创建.元数据自 ...
- 游戏引擎网络开发者的64做与不做(二A):协议与API
[编者按]在这个系列之前的文章"游戏引擎网络开发者的64做与不做(一):客户端方面"中,Sergey介绍了游戏引擎添加网络支持时在客户端方面的注意点.本文,Sergey则将结合实战 ...
- java Class的Long id初始化 为0的问题android数据库操做出现的 android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
java的class中的Long类型变量调用默认的 构造函数new后会被初始化为0. 这句话大家可能感觉这么低级的事情还用你说? 我想说的是这个会产生的一个应用场景 和 避免方法 场景:db插入时候p ...
- Mongodb3.6 基操命令(二)——如何使用help
前言 在上一篇文章Mongodb3.6 快速入门(一)中,我们主要使用两个命令: 1.mongod #启动服务 2.mongo #连接mongodb 对于刚接触mongo的人来说,该怎么给命令传递参数 ...
- Loadrunner教程--常用操做流程
1loadrunner压力测试一般使用流程 1.1loadrunner压力测试原理 本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点.其中固定行为在loadrunner中是通过 ...
- I/O流操做总结(三)
说实话,其实我并不是很喜欢Java这门语言,尽管它很强大,有很多现成的API可以调用 但我总感觉它把简单的事情弄得太过复杂,甚至有时候会让人迷失 弄不清到底是为了写出东西,还是为了语言本身 我学习的第 ...
- javascript使用H5新版媒体接口navigator.mediaDevices.getUserMedia,做扫描二维码,并识别内容
本文代码测试要求,最新的chrome浏览器(手机APP),并且要允许chrome拍照录像权限,必须要HTTPS协议,http不支持. 原理:调用摄像头,将摄像头返回的媒体流渲染到视频标签中,再通过ca ...
- (转)Loadrunner教程--常用操做流程
1loadrunner压力测试一般使用流程 1.1loadrunner压力测试原理 本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点.其中固定行为在loadrunner中是通过 ...
随机推荐
- Html 5 版 电子时钟
效果图: html 5 canvas元素 Html 5的canvas元素可以用于在网页上绘制图形[即canvas的作用]. canvas画布使用JavaScript在网页上绘制图形 其拥有绘制各种路 ...
- Ubuntu vim使用
vim安装:apt-get install vim-gtk vim使用:默认启动插入模式,或者按‘I’进入插入模式,退出插入模式按‘esc’,用冒号‘:wq’进行保存退出: 其复制和粘贴是靠鼠标右键中 ...
- phpmyadmin数据库密码的设置
用phpMyAdmin修改mysql数据库密码 修改mysql数据库密码方法有很多,这里向大家演示一种比较简单的方法,利用phpMyAdmin修改. 工具/原料 phpMyAdmin软件 my ...
- C# 使用 StreamWriter 写入数据
NetworkStream 类.MemoryStream类 和 FileStream 类都提供了以字节为基本单位的读写方法,但是这种方法首先将待写入的数据转换为字节序列后才能进行读写,当操作的是使用字 ...
- Ternary Calculation
Ternary Calculation Time Limit : /2000ms (Java/Other) Memory Limit : /65536K (Java/Other) Total Subm ...
- Python pip 报错
1,pip ssl certification ssl: certificate_verify_failed... 2,Could not find a version that satisfies ...
- thinkpad取消fn键功能
转自:https://bbs.thinkpad.com/thread-1834235-1-1.html 1就是一直觉得fn建自动开启很烦人,于是百度后得到 我们可以 控制面板 -- 键盘--think ...
- [Hadoop] Sqoop安装过程详解
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可 ...
- ajax方法data参数用法的总结
源文件分析: data的传递格式有两种:一是url字符串格式:一种是Json格式,格式分别如上 区别是:当传递的参数中包含 特殊字符如:&时,服务器解析这个参数时就会出错,而必须用encode ...
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: er ...