文件内容的读写
FileInputStream
常用方法
修饰符及
返回值类
型 方法签名 说明
int read() 读取一个字节的数据,返回 -1 代表已经完全读完了
int read(byte[] b) 最多读取 b.length 字节的数据到 b 中,返回实际读到的数
量;-1 代表以及读完了
int read(byte[] b,
int off, int len) 最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返
回实际读到的数量;-1 代表以及读完了
void close() 关闭字节流
一、java.io.File
java.io.File类用于描述文件系统中的一个文件或目录 该类可以:
- 1、访问文件或目录的属性信息
- 2、访问一个目录中的所有子项
- 3、操作文件或目录(创建、删除)
该不可以:
- 访问文件的具体内容
开发时注意不同操作系统的路径的表示方法的差异(如'/'或'\'),使用File.separator可以屏蔽不同操作系统的路径的差异。
1.读取文件属性
package com.wuxiaolong.file.directory;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Description:
* java.io.File
*/
public class FileDemo1 {
public static void main(String[] args) {
/*
* 尽量不写绝对路径。
* 常用的是相对路径:
* 1、相对于项目目录(当前目录)
* 2、相对于类加载目录(实际开发更常用)
*/
File file = new File("." + File.separator + "test.txt"); //分隔符
System.out.println(file);
/*
* 获取当前文件的属性信息
*/
//获取文件名(不包括文件路径)
String name = file.getName();
System.out.println("文件名:"+name);
//获取文件大小(字节)
long length = file.length();
System.out.println("文件大小(字节):"+length);
//最后修改时间(毫秒数)
long time = file.lastModified();
System.out.println(time);
Date date = new Date();
date.setTime(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
String str = sdf.format(date);
System.out.println(str);
/*
* 可读、可写、可执行、隐藏
*/
file.canRead();
file.canWrite();
file.canExecute();
file.isHidden();
System.out.println(file.getPath());
}
}
2.创建文件
package com.wuxiaolong.file.directory;
import java.io.File;
import java.io.IOException;
/**
* Description:
* 使用File创建文件
*
*/
public class FileDemo2 {
public static void main(String[] args) throws IOException {
/*
* 在当前目录下创建demo.txt文件 ;不能再没有的目录里创建文件,父目录不存在会报错
* 不写“./”就是默认在当前目录
*/
File file = new File("." + File.separator + "demo.txt");
/*
* 判断file表示的文件或目录是否存在
*/
if(! file.exists()){
boolean flag = file.createNewFile(); //没有判断也不会覆盖
System.out.println("创建成功" + flag);
}else{
System.out.println("创建失败");
}
}
}
3.删除文件
package com.wuxiaolong.file.directory;
import java.io.File;
/**
* Description:
* 删除文件
*
*/
public class FileDemo3 {
public static void main(String[] args) {
/*
* 将当前目录中的demo.txt删除; 不会放入回收站
*/
File file = new File("demo.txt");
if(file.exists()){
file.delete();
System.out.println("已删除");
}else{
System.out.println("文件不存在");
}
}
}
4.创建一个目录
package com.wuxiaolong.file.directory;
import java.io.File;
/**
* Description:
* 创建一个目录
*
*/
public class FileDemo4 {
public static void main(String[] args) {
/*
* 在当前目录下创建一级目录demo
*/
File file = new File("demo");
if(! file.exists()){
file.mkdir(); //mkdir只能创建一级目录,不能创建多级目录,也不报错
System.err.println("创建成功");
}else{
System.out.println("目录已经存在");
}
}
}
5.创建多级目录
package com.wuxiaolong.file.directory;
import java.io.File;
/**
* Description:
* 创建多级目录
*
*/
public class FileDemo5 {
public static void main(String[] args) {
/*
* 创建多级目录a/b/c/d/e
*/
File file = new File("a" + File.separator +"b" + File.separator +"c" + File.separator +"d" + File.separator +"e" );
if(! file.exists()){
file.mkdirs();
System.out.println("创建成功");
}else{
System.out.println("目录已存在");
}
}
}
6.删除目录
package com.wuxiaolong.file.directory;
import java.io.File;
/**
* Description:
* 删除目录
*
*/
public class FileDemo6 {
public static void main(String[] args) {
File dir = new File("demo");
if(dir.exists()){
dir.delete(); //只能删空目录,非空目录删不掉,也不报错
System.out.println("已删除");
}else{
System.out.println("不存在");
}
}
}
7.获取一个目录的所有子项
package com.wuxiaolong.file.directory;
import java.io.File;
/**
* Description:
* 获取一个目录的所有子项
*
*/
public class FileDemo7 {
public static void main(String[] args) {
/*
* 获取当前目录中的所有内容
*/
File file = new File(".");
/*
* boolean isDirectory()
* 判断是不是目录
*/
if(file.isDirectory()){
/*
* File[] listFiles()
* 查看当前File表示的目录中的所有子项
* 每个子项以一个File对象表示,所有子项存入一个File对象数组,并返回
*/
File[] sub = file.listFiles();
for(File f : sub){
System.out.println(f.getName());
}
}
}
}
8.过滤一个目录中的部分子项
package com.wuxiaolong.file.directory;
import java.io.File;
import java.io.FileFilter;
/**
* Description:
* 获取一个目录中的部分子项
* File支持一个重载的listFile方法,要求传入一个文件过滤器FileFilter(是接口),这样只会返回该目录中满足该过滤器要求的子项
*/
public class FileDemo8 {
public static void main(String[] args) {
/*
* 仅仅获取文件
*/
File dir = new File("." );
System.out.println(dir);
File[] sub = dir.listFiles(
new FileFilter(){//内部类
@Override
public boolean accept(File file){
System.out.println("正在过滤:" +file.getName());
//return file1.isFile(); //获取文件,不要目录
//return file1.getName().endsWith(".pom"); //获取以".xml"结尾的文件
return file.getName().startsWith("."); //获取以"."开头的文件
}
}
);
for(File tmp : sub){
System.out.println(tmp.getName());
}
}
}
本文详细介绍了Java中FileInputStream的基本方法,如读取字节,以及File类的功能,包括访问文件属性、创建和删除文件、目录操作等,并展示了如何使用FileFilter过滤目录内容。

987

被折叠的 条评论
为什么被折叠?



