java的读取和输出_【Java】文件读写和输入输出

正文开始

1. 文件操作 - File

File用来表示文件系统中的一个文件或目录。

使用 File 可以:

访问其表示的文件或目录的属性信息(名字,大小等信息)

创建或删除文件及目录

访问一个目录中的子项

但是File不能访问文件数据。

1.1 基本操作

关于File的一些基本操作:

String getName()

获取文件名称

long length()

获取文件长度

boolean canRead()

判断文件是否可读,可读返回true

boolean canWrite()

判断文件是否可写,可写返回true

boolean isHidden()

判断文件是否隐藏,隐藏返回true

示例如下:

package file;

import java.io.File;

/**

* File用来表示文件系统中的一个文件或目录

* @author returnzc

*/

public class FileDemo {

public static void main(String[] args) {

//访问当前项目目录下的demo.txt文件

File file = new File("./demo.txt");

//获取名字

String name = file.getName();

System.out.println(name);

//获取长度(单位是字节)

long len = file.length();

System.out.println(len);

boolean cr = file.canRead();

boolean cw = file.canWrite();

System.out.println("可读:" + cr);

System.out.println("可写:" + cw);

boolean ih = file.isHidden();

System.out.println("是否隐藏:" + ih);

}

}

运行结果:

demo.txt

18

可读:true

可写:true

是否隐藏:false

1.2 创建、删除文件

判断文件或目录是否存在:

boolean exists()

判断当前 File 表示的文件或目录是否已经存在,存在返回 true

创建文件:

boolean createNewFile() throws IOException

创建新文件,需要处理异常

创建文件示例:

package file;

import java.io.File;

import java.io.IOException;

/**

* 使用File创建一个文件

* @author returnzc

*

*/

public class CreateNewFileDemo {

public static void main(String[] args) throws IOException {

//在当前目录下创建名为 test.txt 的文件

File file = new File("./test.txt");

if (!file.exists()) {

/*

* 创建该文件

* 需要注意,创建的文件所在的目录必须存在,否则会抛出异常。

*/

file.createNewFile();

System.out.println("文件已创建");

} else {

System.out.println("文件已存在");

}

}

}

删除文件、目录:

boolean delete()

删除文件和目录。删除目录时只能删除空目录,非空目录需要挨个把所有子项都删掉才能删除。

删除文件:

package file;

import java.io.File;

/**

* 删除一个文件

* @author returnzc

*

*/

public class DeleteFileDemo {

public static void main(String[] args) {

/*

* 将当前项目目录下的test.txt文件删除

* 在相对路径中,"./"是可以忽略不写的,默认就是从当前目录开始的。

*/

File file = new File("./test.txt");

if (file.exists()) {

file.delete();

System.out.println("文件已删除");

} else {

System.out.println("文件不存在");

}

}

}

1.3 创建、删除目录

创建目录:

boolean mkdir()

创建目录,要求创建的目录所在的父目录必须存在

boolean mkdirs()

创建多级目录,会将不存在的父目录一同创建出来

创建目录:

package file;

import java.io.File;

/**

* 创建一个目录

* @author returnzc

*

*/

public class MkDirDemo {

public static void main(String[] args) {

//在当前目录下创建一个名为 demo 的目录

File dir = new File("demo");

if (!dir.exists()) {

//创建该目录

dir.mkdir();

System.out.println("目录已创建");

} else {

System.out.println("目录已存在");

}

}

}

创建多级目录:

package file;

import java.io.File;

/**

* 创建一个多级目录

* @author returnzc

*

*/

public class MkDirsDemo {

public static void main(String[] args) {

//在当前目录下创建 a/b/c/d/e/f 目录

File dir = new File("a/b/c/d/e/f");

if (!dir.exists()) {

//mkdir()方法要求创建的目录所在的父目录必须存在

//mkdirs()方法则会将不存在的父目录一同创建出来

dir.mkdirs();

System.out.println("创建完毕!");

} else {

System.out.println("目录已存在!");

}

}

}

删除目录:

package file;

import java.io.File;

/**

* 删除目录

* @author returnzc

*

*/

public class DeleteDirDemo {

public static void main(String[] args) {

//将当前目录下的demo目录删除

File dir = new File("a");

if (!dir.exists()) {

//delete方法在删除目录时要求该目录必须是一个空目录

dir.delete();

System.out.println("目录已删除");

} else {

System.out.println("目录不存在");

}

}

}

1.4 其他操作

boolean isDirectory()

判断是否为目录

boolean isFile()

判断是否为文件

File[] listFiles()

列出所有文件

列出指定目录的所有文件:

package file;

import java.io.File;

public class FileDemo {

public static void main(String[] args) {

File dir = new File(".");

File[] subs = dir.listFiles();

System.out.println(subs.length);

for (int i = 0; i < subs.length; i++) {

System.out.println(subs[i].getName());

}

}

}

运行结果:

6

.classpath

.project

.settings

bin

demo.txt

src

获取一个目录中的所有子项:

package file;

import java.io.File;

/**

* 获取一个目录中的所有子项

* @author returnzc

*

*/

public class ListFilesDemo {

public static void main(String[] args) {

//获取当前目录中的所有子项

File dir = new File(".");

if (dir.isDirectory()) {

File[] subs = dir.listFiles();

for (int i = 0; i < subs.length; i++) {

System.out.println(subs[i].getName());

}

}

}

}

删除文件或目录(递归调用):

package file;

import java.io.File;

/**

* 完成方法,实现将给定的File对象表示的文件或目录删除

* @author returnzc

*

*/

public class DeleteTestDemo {

public static void main(String[] args) {

File dir = new File("a");

delete(dir);

}

public static void delete(File f) {

if (f.isDirectory()) {

//先将该目录清空

File[] subs = f.listFiles();

for (int i = 0; i < subs.length; i++) {

File sub = subs[i];

//先删除当前子项

delete(sub);

}

}

f.delete();

}

}

1.5 文件过滤器

重载的ListFiles方法允许我们传入一个文件过滤器(作为参数),然后将目录中满足过滤器要求的子项返回。

文件过滤器是一个接口,如果用的话要实现类:

class MyFilter implements FileFilter {

public boolean accept(File file) {

String name = file.getName();

return name.startsWith(".");

}

}

示例:

package file;

import java.io.File;

import java.io.FileFilter;

/**

* 重载的ListFiles方法,允许我们传入一个文件过滤器

* 然后将目录中满足过滤器要求的子项返回

*/

public class FileDemo {

public static void main(String[] args) {

/*

* 获取当前目录下所有文字以"."开头的子项

*/

File dir = new File(".");

/*

* FileFilter 文件过滤器

*/

MyFilter filter = new MyFilter();

File[] subs = dir.listFiles(filter);

System.out.println(subs.length);

for (int i = 0; i < subs.length; i++) {

System.out.println(subs[i].getName());

}

}

}

class MyFilter implements FileFilter {

public boolean accept(File file) {

String name = file.getName();

System.out.println("正在过滤:" + name);

return name.startsWith(".");

}

}

运行结果:

正在过滤:.classpath

正在过滤:.project

正在过滤:.settings

正在过滤:bin

正在过滤:demo.txt

正在过滤:src

3

.classpath

.project

.settings

可以用匿名内部类:

/*

* FileFilter 文件过滤器

*/

FileFilter filter = new FileFilter() {

public boolean accept(File file) {

String name = file.getName();

System.out.println("正在过滤:" + name);

return name.startsWith(".");

}

};

能少写就少写:

File[] subs = dir.listFiles(new FileFilter() {

public boolean accept(File file) {

String name = file.getName();

System.out.println("正在过滤:" + name);

return name.startsWith(".");

}

});

JDK8后有lambda表达式:

File[] subs = dir.listFiles((file)->{

String name = file.getName();

System.out.println("正在过滤:" + name);

return name.startsWith(".");

}

});

简化为:

File[] subs = dir.listFiles(

(file)->file.getName().startsWith(".")

);

2. RandomAccessFile

3. 基本 IO 操作

4. 文件数据 IO 操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值