JAVA学习第五十二课 — IO流(六)File对象
File类
用来给文件或者目录封装成对象
方便对文件与目录的属性信息进行操作
File对象能够作为參数传递给流的构造函数
一、构造函数和分隔符
public static void FileDemo() {//构造函数演示 //能够将一个已存在或不存在的文件或文件夹封装成File对象
File file = new File("d:\\a.txt");
File file2 = new File("d:","a.txt");
File file3 = new File("d:\\");
File file4 = new File(file3,"a.txt");
File f = new File("d:\\sd\\a.txt");//不同操作系统上的分隔符不同,Windows下是\\
File f2 = new File("d:"+File.separator+"sd"+File.separator+"a.txt");//和上一句等同,在全部的
//File.separator方法实际上就是System.getProperty(....);
System.out.println(f2);
}
二、类方法
1.获取
获取文件名:File.getName()
获取文件路径:File.getpath()/getAbsolutePath()
获取文件大小:File.length()
获取文件改动时间:File.lastModified()
public static void FileMethodDemo() throws IOException {
File file = new File("A.txt");
String filename = file.getName();//获取文件名
String absfilepath = file.getAbsolutePath();//获取绝对路径
String path = file.getPath();//获取相对路径 long len = file.length();//文件大小
long time = file.lastModified();//最后一次改动时间 Date date = new Date(time);
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
String time1 = df.format(date); String parent = file.getParent();//得到父文件夹 System.out.println("name : "+filename);
System.out.println("abspath : "+absfilepath);
System.out.println("path : "+path);//new File("xxx"),xxx是什么就是什么
System.out.println("filelen : "+len);
System.out.println("filetime : "+time1);
System.out.println("filepatent : "+parent);
<span style="white-space:pre"> </span>}
2.创建和删除
public static void FileMethodDemo() throws IOException {
//文件的创建和删除
//创建
File file = new File("file.txt");
boolean falg = file.createNewFile();
System.out.println("flag : "+falg);//和输出流不同,假设不存在,就创建,否则。不创建 //删除
boolean flag1 = file.delete();
//boolean falg = file.deleteOnExit();退出时。删除
System.out.println("remove flag: "+flag1); //文件夹的创建和删除
//创建单级文件夹
File dir = new File("ACM");
boolean b = dir.mkdir();//创建单级文件夹
System.out.println("b:"+b);
//删除
dir.delete();//Window下要注意,文件夹里有内容删不掉 //多级文件夹
File dir = new File("ACM\\asd\\as\\ad");
dir.mkdirs();//创建多级文件夹
System.out.println(dir.delete());//删除的仅仅是ad。其它是父文件夹
}
}
PS:假设文件正在被流操作。也删不掉
3.推断
public static void FileMethodDemo() throws IOException {
//推断
File file = new File("A.txt");
boolean flag = file.exists();//推断A.txt是否存在 boolean flag1 = file.isFile();//推断是否是文件
boolean flag2 = file.isDirectory();//推断是否是文件夹
System.out.println(flag+":"+flag1+":"+flag2);
}
4.重命名和剪切
public static void FileMethodDemo() throws IOException { // //重命名
// File file = new File("D:\\盛夏光年.mp3");
// File file2 = new File("D:\\盛夏光年_1.mp3");
// file.renameTo(file2);//同文件夹下。重命名 //剪切
File file = new File("D:\\盛夏光年_1.mp3");
File file2 = new File("G:\\盛夏光年.mp3");
file.renameTo(file2);//不同文件夹下,剪切
}
5.获取文件夹内容
public static void FileMethodDemo() throws IOException { File file = new File("c:\\");
//File("c:\\a.txt");假设不是一个文件夹,而是一个文件,会空指针异常。数组根本不会创建成功
//假设訪问的是系统级文件夹也会发生空指针异常
//File("c:\\eqwwrfg")假设文件夹存在,没有内容。会返回一个数组,可是长度为0 //获取当前文件夹下的文件和文件夹的名称和隐藏文件
String[] str = file.list();
for(String p : str){
System.out.println(p);
}
}
过滤器:
假设仅仅要C盘下的.java文件的话。那就要用到过滤器
list(FilenameFilter filter)
返回一个字符串数组,这些字符串指定此抽象路径名表示的文件夹中满足指定过滤器的文件和文件夹。
FilenameFilter,
实现此接口的类实例可用于过滤器文件名称。
此接口下仅仅有一个方法:
accept(File dir,
String name)
測试指定文件是否应该包括在某一文件列表中。:当且仅当该名称应该包括在文件列表中时返回 true
;否则返回 false
。
import java.io.*; class FilerJava implements FilenameFilter{
public boolean accept(File dir, String name) {
// System.out.println(dir+"----"+name);
return name.endsWith(".java");//文件后缀
} }
public class Main
{
public static void main(String[] args) throws IOException { FileMethodDemo();
} public static void FileMethodDemo() throws IOException { File file = new File("c:\\"); String[] str = file.list(new FilerJava());
for(String p : str){
System.out.println(p);
}
}
}
实际上,过滤器还是先遍历了一边文件夹下全部文件,符合条件的,返回true
listFiles(FileFilter filter)
返回抽象路径名数组。这些路径名表示此抽象路径名表示的文件夹中满足指定过滤器的文件和文件夹。
import java.io.*; class FilerHidden implements FileFilter{ @Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
return !pathname.isHidden();//显示非隐藏对象
}
}
public class Main
{
public static void main(String[] args) throws IOException { FileMethodDemo();
} public static void FileMethodDemo() throws IOException { File dir = new File("C:\\"); File[] files = dir.listFiles(new FilerHidden());//得到当前文件夹下全部非隐藏对象 for(File f : files){
System.out.println(f);
} }
}
过滤器的简单应用
import java.io.*; class FilerHidden implements FilenameFilter{ private String houzhui; public FilerHidden(String houzhui) {
super();
this.houzhui = houzhui;
} public boolean accept(File dir, String name) { return name.endsWith(houzhui);
} }
public class Main
{
public static void main(String[] args) throws IOException { FileMethodDemo();
} public static void FileMethodDemo() throws IOException { File dir = new File("C:\\"); File[] files = dir.listFiles(new FilerHidden(".java")); for(File f : files){
System.out.println(f);
}
}
}
JAVA学习第五十二课 — IO流(六)File对象的更多相关文章
- JAVA学习第五十四课 — IO流(八)打印流 & 序列流
一.综合练习-文件清单列表 获取指定文件夹下,指定扩展名的文件(含子文件夹),并将这些文件的绝对路径写到一个文本文件里.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3. ...
- JAVA学习第四十八课 — IO流(二):文件的复制 & 缓冲区1
一.复制文本文件 将G盘的文本文件拷贝到D盘上 也就是 读取G盘中文本文件的数据.写入D盘中->连读带写 而剪切呢.就是连读带写后,删除原盘的文件 <span style="fo ...
- Java学习之路(十二):IO流<二>
字符流 字符流是可以直接读写字符的IO流 使用字符流从文件中读取字符的时候,需要先读取到字节数据,让后在转换为字符 使用字符流向文件中写入字符时,需要把字符转为字节在写入文件 Reader和Write ...
- Java学习之路(十二):IO流
IO流的概述及其分类 IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流(读写数据) 输出流(写数据) 流按操作 ...
- Java学习之路(十二):IO流<三>
复习:序列流 序列流可以把多个字节输入整合成一个,从序列流中读取到数据时,将从被整合的第一个流开始读取,读完这个后,然后开始读取第二个流,依次向后推. 详细见上一篇文章 ByteArrayOutput ...
- JAVA学习第五十九课 — 网络编程概述
网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了 ...
- JAVA学习第三十二课(经常使用对象API)- 基本数据类型对象包装类
将基本数据类型(8种:int..)封装成对象的优点就是能够在对象中封装很多其它的功能和方法来操控该数据 常见的操作就是:用于基本数据类型与字符串之间的转换 基本数据类型对象包装类一般用于基本类型和字符 ...
- Java笔记(二十七)……IO流中 File文件对象与Properties类
File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果 ...
- JavaEE基础(二十二)/IO流
1.IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: ...
随机推荐
- mac 重置mysql root密码
1. 关闭mysql服务 sudo /usr/local/mysql/support-files/mysql.server stop 如果出现Starting mysqld daemon with d ...
- Spring Boot学习——统一异常处理
本随笔记录使用Spring Boot统一处理异常. 本文实例是从数据库中根据ID查询学生信息,要求学生的年龄在14——20岁之间.小于14岁,提示“你可能在上初中”:大于20岁,提示“呢可能在上大学” ...
- 【转】CentOS 6.0 系统 LAMP(Apache+MySQL+PHP)安装步骤
一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysql mysql-server 安装完毕,让 MySQ ...
- 关于WEB页面的强制分页打印问题
最近项目中有个需求要求打印web页面数据,但是碰到打印预览显示数据时,多的数据就不翼而飞了(不分页),搞的很是焦灼~ 最先是以为纸张的问题,胡乱折腾了一番,把A4约硬是改成了LARGE号的纸,多的数据 ...
- 谁都能听懂的Redux+Redux-Saga超级傻瓜教程
对不起本文确实有标题党的嫌疑:) 想要理解本文还是要先会用react和es6,如果连react和es6都不知道是什么的话我也没辙:( 如果你选择用react来开发应用,并且你没对各个组件的状态进行应有 ...
- git tag 的使用
// 查看tag,列出所有tag,列出的tag是按字母排序的,和创建时间没关系. $ git tag v0.1 v1.3 /查看指定版本的tag,git tag -l “v1.4.2.**” $ gi ...
- BZOJ3631 松鼠的新家(树链剖分)
题目链接 松鼠的新家 差不多可以说是树链剖分的模板题了,直接维护即可. #include <bits/stdc++.h> using namespace std; #define REP( ...
- Maven错误:“No goals have been specified for this build...”问题解决
如图出现如下错误: 解决方法如下: 1.(未测试)在pom.xml添加如下配置: <build> <defaultGoal>compile</defaultGoal> ...
- Scut游戏服务器引擎之Unity3d接入
Scut提供Unity3d Sdk包,方便开发人员快速与Scut游戏服务器对接: 先看Unity3d示例如下: 启动Unity3d项目 打开Scutc.svn\SDK\Unity3d\Assets目录 ...
- Java Web开发(JSP、Servlet)乱码的一揽子解决方案
千万不要看网上那些杂七杂八的解决乱码的文章,解决乱码最好的方法是(没有之一):在所有地方统一采用UTF-8编码. 这其中包括: 1 - 工程 如果使用的是Eclipse,那么打开Preference, ...