【java学习笔记】文件操作
文件操作 java.io.File
①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据)
1.单个文件
创建单个文件,查看属性,删除单个文件。
package tmp; import java.io.File;
import java.io.IOException; public class File_createNewFile {
public static void main(String[] args) throws IOException { //在当前目录下(当前项目的根目录)创建一个文件test.txt
File file = new File("."+File.separator+"test.txt"); if(!file.exists()){
file.createNewFile();
System.out.println("文件创建完毕!");
}else{
System.out.println("该文件已存在!");
} System.out.println(file.getName()); //获取文件名 String
System.out.println(file.length()); //获取文件长度 long ,单位:字节
System.out.println(file.canRead()); //是否可读
System.out.println(file.canWrite()); //是否可写
System.out.println(file.isAbsolute()); //是否是一个绝对路径
System.out.println(file.isFile()); //是否是文件
System.out.println(file.isDirectory());//是否是目录
System.out.println(file.isHidden()); //是否隐藏
System.out.println(file.exists()); //是否存在 File[] files = file.listFiles(); //获取指定路径下子目录和子文件
for (File f : files) {
System.out.println(f);
} File file2 = new File("."+File.separator+"test2.txt");
file.renameTo(file2); //重命名/剪切 file.delete(); //删除文件
System.out.println(file.exists()); //文件不存在了 String path = file.getAbsolutePath();//获取绝对路径
System.out.println(path);
}
}
2.一级目录
一级目录的创建,删除。
import java.io.File; // 使用File创建一个目录
public class File_mkdir {
public static void main(String[] args) {
//在当前目录下创建一个目录:demo
// File dir = new File("a/b/demo.txt"); // 只有当a/b两级目录存在时可创建,否则不行。
File dir = new File("demo.txt");
if(!dir.exists()){
dir.mkdir();
System.out.println("目录已创建");
}else{
System.out.println("该目录已存在!");
}
dir.delete(); // 如果删除的是目录,并且目录下有子文件或者子目录则会删除失败。
System.out.println(dir.exists());
}
}
3.多级目录
多级目录的创建,删除。
import java.io.File; //创建一个多级目录
public class File_mkdirs {
public static void main(String[] args) {
//在当前目录下创建目录:a/b/c/d/e/f
File dir = new File("a"+File.separator+"b"+File.separator+
"c"+File.separator+"d"+File.separator+"e"+File.separator+"f"); if(!dir.exists()){
//mkdirs在创建当前File表示的目录时会将所有不存在的父目录一同创建出来。而mkdir不具备这样的功能.
dir.mkdirs();
System.out.println("目录已创建!");
}else{
System.out.println("目录已存在!");
} delete(new File("a"));
} //删除file文件或者file目录及其所有文件
public static void delete(File file){
if(file.isDirectory()){
//将该目录子项全部清除
File[] subs = file.listFiles();
for(int i=0;i<subs.length;i++){
delete(subs[i]);
}
}
file.delete();
}
}
4.文件过滤器
import java.io.File; //获取一个目录中的所有子项
public class File_listFiles {
public static void main(String[] args) { File dir = new File(".");
/*
* boolean isFile()
* 判断当前File表示的是否为文件
*
* boolean isDirectory()
* 判断当前File表示的是否为目录
*/
//判断是否为目录
if(dir.isDirectory()){
/*
* File[] listFiles()
* 返回的数组中每个元素为该File表示的目录中的一个子项
*/
File[] subs = dir.listFiles();
for(int i = 0; i < subs.length; i++){
System.out.println(subs[i].getName());
}
} }
}
listFiles
import java.io.File;
import java.io.FileFilter; //File提供了一个重载的listFiles方法,允许传入一个FileFilter(文件过滤器),
//然后将当前File表示的目录中满足该过滤器要求的子项返回.
public class FileFilterDemo1 {
public static void main(String[] args) {
//获取当前目录中所有名字以"."开头 的子项
File dir = new File(".");
FileFilter filter = new FileFilter(){
//添加过滤条件,只要认为参数给定的file满足要求,则返回true即可
public boolean accept(File file) {
String name = file.getName();
System.out.println("正在过滤:"+name);
return name.startsWith(".");
} };
File[] subs = dir.listFiles(filter);
for(int i = 0; i < subs.length; i++){
System.out.println(subs[i].getName());
}
}
}
import java.io.File;
import java.io.FileFilter; public class FileFilterDemo2 {
public static void main(String[] args) {
File file = new File("D:\\"); // FileFilter---文件过滤器
// 只获取D盘下的子文件
File[] fs = file.listFiles(new FileFilter() {
// 指定筛选规则
@Override
public boolean accept(File pathname) {
return pathname.isFile();
}
});
for(File f : fs){
System.out.println(f);
}
}
}
FileFilterDemo2
5.文件名过滤器
import java.io.File;
import java.io.FilenameFilter; public class FileNameFilterDemo {
public static void main(String[] args) { File file = new File("D:\\"); // FilenameFilter---文件名过滤器
File[] fs = file.listFiles(new FilenameFilter() { @Override
public boolean accept(File dir, String name) {
return name.matches(".*[nN].*");
}
});
for (File f : fs) {
System.out.println(f);
}
}
}
其它文件操作练习:
1.统计java文件的个数
import java.io.File; public class FileCountJavaFile {
public static void main(String[] args) {
File dir = new File("E:\\xs_daidaicgb\\java projects\\03API\\day17");
System.out.println(countJava(dir));
}
public static int countJava(File file){
if(file == null){
return 0;
}
if(!file.isDirectory()){
if(file.getName().endsWith(".java"))
return 1;
else
return 0;
}else{
int sum = 0;
File[] fs = file.listFiles();
for(File f : fs){
sum += countJava(f);
}
return sum;
}
}
}
2.将所有pdf文件提取到D:PDF下
import java.io.File; public class FileTypeFind {
public static void main(String[] args) {
File file = new File("D:\\01javaBasic");
//将D:\\01javaBasic下的pdf文件提取到D:\\PDF\\下
getTypeFile(file,"D:\\PDF\\","pdf");
System.out.println("over");
}
/**
* 将原文件中的制定类型文件,剪切到指定地址。若有重名文件自动用_数字标号。
* @param srcFile 需要操作的文件
* @param destPath 将筛选出来的文件存入destPath
* @param findType 制定类型的文件,例如pdf,txt,docx等
*/
public static void getTypeFile(File srcFile, String destPath, String findType){
if(srcFile == null){
throw new NullPointerException("文件不能为空!");
}
if(srcFile.isDirectory()){
File[] fs = srcFile.listFiles();
for(File f : fs){
if(f.isDirectory())
System.out.println(f);
getTypeFile(f,destPath,findType);
}
}else{
if(srcFile.getName().endsWith("."+findType)){
File dir = new File(destPath+srcFile.getName());
if(dir.exists()){
int count = 0;
String fileName = srcFile.getName().substring(0,srcFile.getName().lastIndexOf("."));
while(dir.exists()){
count++;
dir = new File(destPath+fileName+"_"+count+"."+findType);
}
srcFile.renameTo(new File(destPath+fileName+"_"+count+"."+findType));
}else{
srcFile.renameTo(new File(destPath+srcFile.getName()));
}
}
}
}
}
效果:
【java学习笔记】文件操作的更多相关文章
- python学习笔记:文件操作和集合(转)
转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...
- Java学习笔记--文件IO
简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...
- erlang学习笔记(文件操作)
参考这里和这里了解到的文件操作的模块有很多:kernel下有:file,stdlib下有:filelib,filename,file_sorter.(具体查看官方文档)
- python基础学习笔记——文件操作
文件操作 初始文件操作 使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了 根据打开方式的不同能够执行的操作 ...
- 03 python学习笔记-文件操作(三)
本文内容主要包括以下方面: 1. 文件操作基本认识2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 文件的修改 一.文 ...
- C学习笔记-文件操作
文件操作大致分三步 打开文件 读写文件 关闭文件 二进制和文本模式的区别 在windows系统中,文本模式下,文件以"\r\n"代表换行.若以文本模式打开文件,并用fputs等函数 ...
- Java学习笔记——IO操作之对象序列化及反序列化
对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为 ...
- java学习笔记—第三方操作数据库包专门接收DataSource-dbutils (30)
Dbutils 操作数据第三方包.依赖数据源DataSource(DBCP|C3p0). QueryRunner – 接收DataSource|Connection,查询数据删除修改操作.返回结果. ...
- Python学习笔记——文件操作
python中,一切皆对象. 一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建 ...
- Python3.5学习笔记-文件操作
在Python中,操作文件对象使用open函数来创建,下表列出了常用的操作file的函数: 序号 方法及描述 1.file.close() 关闭文件.关闭后文件不能再进行读写操作. 2.file.fl ...
随机推荐
- MySQL --当AUTO_INCREMENT自增遇到0
熟悉SQL Server的DBA都知道,在SQL Server中如果想要显示制定自增值,除了在INSERT语句中显示写明自增列外,还需要使用SET IDENTITY_INSERT TB_NAME ON ...
- Centos7下Java开发基本环境搭建
一.Centos7安装JDK 首先查看自己的机器上是否已经自带openjdk,命令如下: rpm -qa | grep jdk 如果存在,则按照如下命令进行依次卸载: yum -y remove fi ...
- 【socket编程】select manual page翻译
原文: select manual page 依赖的头文件 /* According to POSIX.1-2001, POSIX.1-2008 */ #include <sys/select. ...
- 事件委托live,delegate,on区别
事件委托 我们知道,DOM在为页面中的每个元素分派事件时,相应的元素一般都在事件冒泡阶段处理事件.在类似 body > div > a 这样的结构中,如果单击a元素,click事件会从a一 ...
- web.xml组件加载顺序
在配置项目组件的过程中, 了解Tomcat加载组件顺序很有必要. 例如某些框架如Quartz的集群功能需要数据库的支持, 数据库的加载肯定要在框架组件加载之前. 经过查阅和Debug发现, web.x ...
- BZOJ 3585: mex [主席树]
3585: mex Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 787 Solved: 422[Submit][Status][Discuss] ...
- HDU1005 找规律 or 循环点 or 矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=1005 1.一开始就注意到了n的数据范围 <=100 000 000,但是还是用普通的循环做的,自然TLE了 ...
- python数据分析工具包(1)——Numpy(一)
在本科阶段,我们常用的科学计算工具是MATLAB.下面介绍python的一个非常好用而且功能强大的科学计算库--Numpy. a powerful N-dimensional array object ...
- weblogic修改jdk版本遇到的问题与解决方法
1.修改setDomainEnv ,路径.../domains/xx_domain\bin\ 1.1修改JAVA_HOME为需要修改的路径 注意:BEA_JAVA_HOME路径不需修改 2.修改路径后 ...
- Java多线程应用总结
一.基本方法 进程和线程一样,都是实现并发的一个基本单位.线程是比进程更小的执行单位,线程是在进程的基础上进行的进一步划分.所谓多线程,是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单 ...