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中是通过 ...
随机推荐
- 【Lintcode】177.Convert Sorted Array to Binary Search Tree With Minimal Height
题目: Given a sorted (increasing order) array, Convert it to create a binary tree with minimal height. ...
- C# 深化基本概念
关于IDisposable的Dispose方法 .Net中GC会自动回收托管资源, 对于非托管资源应该使用Dispose方法. 在使用Dispose方法时,应注意避免在Dispose内部中继续释放托管 ...
- 解决Visual Code安装中文插件失败问题
早已听闻Visual Code的大名,今日一用,果然不同凡响. 只不过,我的常用开发环境是不联网的,需要离线安装Visual Code和扩展插件. 以前要安装插件只能从VsCode里装,想离线安装比较 ...
- 关于REST的一些想法
REST and RESTful 最近入手了REST,谈谈自己的体会. 所谓REST, 我觉得是一种网址的设计风格.过去我们用Struts 或Spring MVC 时从来没有考虑过URL的设计风格.所 ...
- unique()函数
unique()是c++里面的一个去重函数,包含在<iostream>中. 该函数将重复的元素移至容器的末尾,返回的为前面的无重复项的尾地址. 由于返回的是地址,所以经常需要转换为数值使用 ...
- gitHub上传代码
首先进入github官网注册一个帐号 00.png 注册完帐号之后创建一个项目 01.png 设置创建项目的信息 02.png 创建项目完之后复制项目的地址,以供后面下载项目使用 03.png 在桌面 ...
- junit 直接执行测试方法报错
在eclipse中,直接右击test1->Run As->Junit Test,报下面的错: java.lang.NoSuchMethodError: org.junit.runner.R ...
- loj #6079. 「2017 山东一轮集训 Day7」养猫【最大费用最大流】
首先假设全睡觉,然后用费用流考虑平衡要求建立网络流 把1~n的点看作是i-k+1~k这一段的和,连接(i,i+k,1,e[i]-s[i]),表示把i改成吃饭,能对i~i+k-1这一段的点产生影响:然后 ...
- IT兄弟连 Java语法教程 Java开发环境 配置Java环境变量
在安装完JDK后,我们需要配置系统的环境变量,否则在控制台中使用JDK为我们提供的工具时将出现如图12所示的错误信息. 图12 未配置环境变量时执行java命令提示的错误信息 当出现这样的提示信息时 ...
- 笔记-迎难而上之Java基础进阶2
Set集合 import java.util.*; public class HashSetDemo{ public static void main(String[] args){ //Set接口的 ...