Day01:文件操作(File、RandomAccessFile)
文件操作
JAVA中的 File 类是文件和目录路径名的抽象形式。使用 File 类可以获取文件本身的一些信息,例如文件所在的目录、文件长度、文件读写权限等。
在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。
File 类表示处理文件和文件系统的相关信息。也就是说,File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。
| 方法名称 | 说明 |
|---|---|
| boolean canRead() | 测试应用程序是否能从指定的文件中进行读取 |
| boolean canWrite() | 测试应用程序是否能写当前文件 |
| boolean delete() | 删除当前对象指定的文件 . |
| boolean exists() | 测试当前 File 是否存在 |
| String getAbsolutePath() | 返回由该对象表示的文件的绝对路径名 |
| String getName() | 返回表示当前对象的文件名 |
| String getParent() | 返回当前 File 对象路径名的父路径名,如果此名没有父路径则为 null |
| boolean isAbsolute() | 测试当前 File 对象表示的文件是否为一个绝对路径名 |
| boolean isDirectory() | 测试当前 File 对象表示的文件是否为一个路径 |
| boolean isFile() | 测试当前 File 对象表示的文件是否为一个“普通”文件 |
| long lastModified() | 返回当前 File 对象表示的文件最后修改的时间 |
| long length() | 返回当前 File 对象表示的文件长度 |
| String[] list() | 返回当前 File 对象指定的路径文件列表 |
| String[] list(FilenameFilter) | 返回当前 File 对象指定的目录中满足指定过滤器的文件列表 |
| boolean mkdir() | 创建一个目录,它的路径名由当前 File 对象指定 |
| boolean mkdirs() | 创建一个目录,它的路径名由当前 File 对象指定 |
| boolean renameTo(File) | 将当前 File 对象指定的文件更名为给定参数 File 指定的路径名 |
创建和删除文件
File 类除了对文件的创建和删除外,还可以创建和删除目录。创建目录需要调用 mkdir() 方法,删除目录需要调用 delete() 方法。无论是创建还是删除目录都可以调用 exists() 方法判断目录是否存在。
mkdir()方法
· File的mkdir方法用于创建此抽象路径名指定的目录。
- boolean mkdir()
- 返回值:当且仅当已创建目录时,返回true;否则返回false
语法:
File f=new File("文件路径");
System.out.println(f.mkdir());
mkdirs()方法
· File的mkdirs方法用于创建此抽象路径名指定的目录,包括所有必须但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必须的父目录。
- boolean mkdirs()
- 返回值:当且仅当已创建目录以及所有必需的父目录时,返回true;否则返回false
delete()方法
· File的delete方法用于删除此抽象路径名表示的文件或目录。
- boolean delete()
- 返回值:当且仅当成功删除文件或目录时,返回true;否则返回false
- 需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。
语法:
File f=new File("文件路径");
System.out.println(f.delete());
获取文件属性
文件长度
length()方法
语法:
File f=new File("文件路径");
System.out.println(f.length());
文件目录(判断是否是文件夹)
方式1:
File()方法
语法:
File f=new File("文件路径");
System.out.println(f.isFile());
方式2:
isDirectory()方法
语法:
File f=new File("文件路径");
System.out.println(f.isDirectory());
是否可读?
canRead()方法
语法:
File f=new File("文件路径");
System.out.println(f.canRead());
是否可写?
canWrite()方法
语法:
File f=new File("文件路径");
System.out.println(f.canWrite());
是否隐藏?
isHidden()方法
语法:
File f=new File("文件路径");
System.out.println(f.isHidden());
最后修改日期
lastModified()方法
语法:
File f=new File("文件路径");
System.out.println(new Date(f.lastModified()));
文件名称
getName()方法
语法:
File f=new File("文件路径");
System.out.println(f.getName());
文件路径
getPath()方法
语法:
File f=new File("文件路径");
System.out.println(f.getPath());
路径
绝对路径
getAbsolutePath()方法
语法:
File f=new File("文件路径");
System.out.println(f.getAbsolutePath());
相对路径,相对于工作目录,如果在eclipse中,就是项目目录
判断是否存在文件
exists()方法
语法:
File f=new File("文件路径");
System.out.println(f.exists());
是否是文件(非文件)
isFile()方法
语法:
File f=new File("文件路径");
System.out.println(f.isFile());
文件重命名
renameTo()方法
语法:
File f=new File("文件路径");
File f2=new File("文件重命名路径");
f.renameTo(f2);
还有其他常用方法
实例体现:
1 import java.io.File;
2 import java.io.IOException;
3 import java.util.Arrays;
4
5 public class TWO {
6 public static void main(String[] args) throws IOException {
7 File f1=new File("/home/soft01/文档/IO/xx");
8 //字符串返回所有文件
9 String[] f=f1.list();
10 System.out.println(Arrays.toString(f));
11 //以数组返回所有文件
12 File[] f2=f1.listFiles();
13 System.out.println(Arrays.toString(f2));
14 //以字符串返回获取文件
15 String a=f1.getParent();
16 System.out.println(a);
17 //以文件返回获取文件
18 File b=f1.getParentFile();
19 System.out.println(b);
20 //创建文件,如果父文件夹不存在,创建父文件
21 System.out.println(f1.getParentFile().exists());
22 f1.mkdir();
23 //创建文件,如果父文件夹不存在抛出异常
24 f1.mkdirs();
25 //创建空文件,
26 f1.createNewFile();
27 //创建父目录
28 f1.getParentFile().mkdirs();
29 //显示盘符
30 f1.listRoots();
31 //删除文件
32 f1.delete();
33 }
34 }
文件操作——RandomAccessFile
Java提供了一个可以对文件随机访问的操作,访问包括读和写操作。该类名为RandomAccessFile。该类的读写是基于指针的操作。
只读模式
RandomAccessFile在对文件进行随机访问操作时有两个模式,分别为只读模式(只读取文件数据),和读写模式(对文件数据进行读写)。
只读模式:
在创建RandomAccessFile时,其提供的构造方法要求我们传入访问模式:
RandomAccessFile(File file,String mode) RandomAccessFile(String filename,String mode)
其中构造方法的第一个参数是需要访问的文件,而第二个参数则是访问模式:
r”:字符串”r”表示对该文件的访问是只读的。
读写模式
创建一个基于文件访问的读写模式的RandomAccessFile我们只需要在第二个参数中传入”rw”即可。
RandomAccessFile raf = new RandomAccessFile(file,”rw”);
那么这时在使用RandomAccessFile对该文件的访问就是又可读又可写的。
字节数据读写操作
write(int d)方法
RandomAccessFile提供了一个可以向文件中写出字节的方法:
void write(int d)
该方法会根据当前指针所在位置处写入一个字节,是将参数int的”低8位”写出。
read()方法
RandomAccessFile提供了一个可以从文件中读取字节的方法:
int read()
该方法会从RandomAccessFile当前指针位置读取一个byte(8位) 填充到int的低八位, 高24位为0, 返回值范围正数: 0~255, 如果返回-1表示读取到了文件末尾EOF(EOF:End Of File)! 每次读取后自动移动文件指针, 准备下次读取。
write(byte[] d)方法
RandomAccessFile提供了一个可以向文件中写出一组字节的方法:
void write(byte[] d)
该方法会根据当前指针所在位置处连续写出给定数组中的所有字节,与该方法相似的还有一个常用方法:
void write(byte[] d,int offset,int len)
该方法会根据当前指针所在位置处连续写出给定数组中的部分字节,这个部分是从数组的offset处开始,连续len个字节。
read(byte[] d)方法
RandomAccessFile提供了一个可以从文件中批量读取字节的方法:
int read(byte[] b)
该方法会从文件中尝试最多读取给定数组的总长度的字节量,并从给定的字节数组第一个位置开始,将读取到的字节顺序存放至数组中,返回值为实际读取到的字节量 。
close方法
RandomAccessFile在对文件访问的操作全部结束后,要调用close()方法来释放与其关联的所有系统资源。
void close()
例如:
RandomAccessFile raf = new RandomAccessFile(file,”rw”);
…..//读写操作
raf.close();//访问完毕后要关闭以释放系统资源。
文件指针操作
getFilePointer方法
RandomAccessFile的读写操作都是基于指针的,也就是说总是在指针当前所指向的位置进行读写操作。
RandomAccessFile提供了一个可以获取当前指针位置的方法:
long getFilePointer()
RandomAccessFile在创建时默认指向文件开始(第一个字节),通过getFilePointer方法获取指针位置时值是"0"。
例如:
RandomAccessFile raf = new RandomAccessFile(file,”rw”);
System.out.println(raf.getFilePointer());//
raf.write(‘A’);//写出一个字节后,指针自动向后移动到下一个字节位置
System.out.println(raf.getFilePointer());//
raf.writeInt(3);
System.out.println(raf.getFilePointer());//
raf.close();
seek方法
RandomAccessFile的提供了一个方法用于移动指针位置。
void seek(long pos)
使用该方法可以移动指针到指定位置。
例如:
RandomAccessFile raf = new RandomAccessFile(file,”rw”);
System.out.println(raf.getFilePointer());//
raf.write(‘A’);//指针位置1
raf.writeInt(3);//指针位置5
raf.seek(0);//将指针移动到文件开始处(第一个字节的位置)
System.out.println(raf.getFilePointer());//
raf.close();
skipBytes方法
RandomAccessFile的提供了一个方法可以尝试跳过输入的 n 个字节以丢弃跳过的字节,方法定义为:
int skipBytes(int n)
该方法可能跳过一些较少数量的字节(可能包括零)。这可能由任意数量的条件引起;在跳过n个字节之前已到达文件的末尾只是其中的一种可能。此方法不抛出 EOFException。返回跳过的实际字节数。如果 n 为负数,则不跳过任何字节。
Day01:文件操作(File、RandomAccessFile)的更多相关文章
- JAVASE02-Unit06: 文件操作——File 、 文件操作—— RandomAccessFile
Unit06: 文件操作--File . 文件操作-- RandomAccessFile java.io.FileFile的每一个实例是用来表示文件系统中的一个文件或目录 package day06; ...
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
c#中@标志的作用 参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...
- python的文件操作file:(内置函数,如seek、truncate函数)
file打开文件有两种方式,函数用file()或者open().打开后读入文件的内容用read()函数,其读入是从文件当前指针位置开始,所以需要控制指针位置用: 一.先介绍下file读入的控制函数: ...
- 【转载】C#工具类:实现文件操作File的工具类
在应用程序的开发中,文件操作的使用基本上是必不可少的,FileStream类.StreamWriter类.Directory类.DirectoryInfo类等都是文件操作中时常涉及到的类,我们可以通过 ...
- PythonStudy——文件操作 File operation
# 文件:就是硬盘的一块存储空间 # 1.使用文件的三步骤: # 打开文件- 得到文件对象:找到数据存放在硬盘的位置,让操作系统持有该空间,具有操作权# 硬盘空间 被 操作系统持有# 文件对象f 被 ...
- 文件操作(FILE)与常用文件操作函数
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
- Java 文件操作-File
1.File文件操作 java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录.File类只用于表示文件(目录)的信息(名称.大小等),不能对文件的 ...
- C语言文件操作 FILE结构体
内存中的数据都是暂时的,当程序结束时,它们都将丢失.为了永久性的保存大量的数据,C语言提供了对文件的操作. 1.文件和流 C将每个文件简单地作为顺序字节流(如下图).每个文件用文件结束符结束,或者在特 ...
- C#文件操作 File(静态类)
操作某一个文件/文件夹,需要一个文件的完整路径 一.使用File的静态方法进行文件操作 1 2 3 4 5 6 7 8 9 //使用file的静态方法进行复制 File.C ...
随机推荐
- mysqldump --tab=path参数使用
[root@zstedu tmp]# chown -R mysql. /tmp/andyxi3306/ [root@zstedu tmp]# mysqldump -h127.0.0.1 -uroot ...
- H5小程序不同页面之间通讯解决方案
小程序做开发的时候难免需要不同页面之间的通讯,比如首页打开新的页面搜索获取结果返回到首页,不同tab页面之间的数据交互等等.于是做了以下总结 打开新的页面可以通过 navigator 组件来实现,通过 ...
- hive日期函数-Demo(二)
需求:某资产近一个月的资产值 比如:今天是2018年2月28日,近一个月若是按照自然月来算,那么是2018年2月1日至2018年2月28日.最终需要的日期格式为:yyyyMMdd. 当日时间戳 uni ...
- 一例tornado框架下处理上传图片并生成缩略图的例子
class coachpic(RequestHandler): @gen.coroutine def post(self): picurl = self.request.files[] print(& ...
- 第十一章 前端开发-bootstrap
11.5.0 bootstrap 11.5.1 bootstrap的介绍和响应式 http://book.luffycity.com/python-book/95-bootstrap/951-boot ...
- django 模型层(orm)05
目录 配置测试脚本 django ORM基本操作 增删改查 Django 终端打印SQL语句 13条基本查询操作 双下滑线查询 表查询 建表 一对多字段数据的增删改查 多对多字段数据的增删改查 基于对 ...
- Python的f.seek(offset, whence)函数
file.seek()方法标准格式是:seek(offset,whence=0)offset:开始的偏移量,也就是代表需要移动偏移的字节数whence:给offset参数一个定义,表示要从哪个位置开始 ...
- Cannot use JSX unless the '--jsx' flag is provided.
在tsx文件中加入html代码后,报错 Cannot use JSX unless the '--jsx' flag is provided. 解决方法: 在tsconfig.json中加入: &qu ...
- hdu 5791 Two 二维dp
Two Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- [CSP-S模拟测试]:密码(数位DP+库默尔定理)
题目描述 为了揭穿$SERN$的阴谋,$Itaru$黑进了$SERN$的网络系统.然而,想要完全控制$SERN$,还需要知道管理员密码.$Itaru$从截获的信息中发现,$SERN$的管理员密码是两个 ...