文件操作 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学习笔记】文件操作的更多相关文章

  1. python学习笔记:文件操作和集合(转)

    转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...

  2. Java学习笔记--文件IO

    简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...

  3. erlang学习笔记(文件操作)

    参考这里和这里了解到的文件操作的模块有很多:kernel下有:file,stdlib下有:filelib,filename,file_sorter.(具体查看官方文档)

  4. python基础学习笔记——文件操作

    文件操作 初始文件操作 使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了 根据打开方式的不同能够执行的操作 ...

  5. 03 python学习笔记-文件操作(三)

    本文内容主要包括以下方面: 1. 文件操作基本认识2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 文件的修改 一.文 ...

  6. C学习笔记-文件操作

    文件操作大致分三步 打开文件 读写文件 关闭文件 二进制和文本模式的区别 在windows系统中,文本模式下,文件以"\r\n"代表换行.若以文本模式打开文件,并用fputs等函数 ...

  7. Java学习笔记——IO操作之对象序列化及反序列化

    对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为 ...

  8. java学习笔记—第三方操作数据库包专门接收DataSource-dbutils (30)

    Dbutils 操作数据第三方包.依赖数据源DataSource(DBCP|C3p0). QueryRunner – 接收DataSource|Connection,查询数据删除修改操作.返回结果. ...

  9. Python学习笔记——文件操作

    python中,一切皆对象.   一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建 ...

  10. Python3.5学习笔记-文件操作

    在Python中,操作文件对象使用open函数来创建,下表列出了常用的操作file的函数: 序号 方法及描述 1.file.close() 关闭文件.关闭后文件不能再进行读写操作. 2.file.fl ...

随机推荐

  1. Codeforce B. Polycarp and Letters

    B. Polycarp and Letters time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  2. unicode文件处理(如果是ANSI编码就不需要了)

    1.unicode文件的打开必须用rb模式. 3.wchar_t str[100] = { 0 }; 这个占200个字节. 2.宽字符对应的处理 fgetc fgetwc fputc fputwc f ...

  3. ZOJ 2314 Reactor Cooling [无源汇上下界网络流]

    贴个板子 #include <iostream> #include <cstdio> #include <cstring> #include <algorit ...

  4. JavaScript语言学习中的注意事项

    javascript: 基于浏览器 基于对象 事件驱动 脚本语言 由: javascript: ECMAscript(ES) DOM文档对象模型 BOM浏览器对象模型,三部分组成 使用js的三种方式 ...

  5. SDN第四次作业

    作业链接 1.阅读 了解SDN控制器的发展 http://www.sdnlab.com/13306.html http://www.docin.com/p-1536626509.html 了解ryu控 ...

  6. request、response的setCharacterEncoding与response的setContentType

    一.request中的setCharacterEncoding方法:作用是用指定的编码集去覆盖request对象中的默认的"ISO-8859-1"编码集,如"UTF-8& ...

  7. Centos-7 + Docker-1.12 中 devicemapper + direct_lvm 的 Docker 存储配置

    html,body { font-size: 12pt } body { font-family: Helvetica, "Hiragino Sans GB", "微软雅 ...

  8. MySQL中的内置系统函数

    一.字符串函数  1. CONCAT(S1,S2....SN): 把传入的参数连接成一个字符串  2. INSERT(str, x, y, insert): 将字符串 X位置开始,y个字符串长度替换为 ...

  9. 微信小程序内嵌网页 网站生成小程序

    1. 进入小程序后台 - 设置 - 开发设置 2. 添加业务域名(小程序只支持https) 3. 小程序代码 <web-view src="网址"></web-v ...

  10. MyEclipse出现红色感叹号解决办法

    今天在做数据库连接练习的时候自己创建的工程突然出现了一个红色的感叹号,然后运行自己写的代码的时候出现找不到主类的错误!!! 我还以为是自己不小心写错了,然后让编译器自动生成代码也出现了一样的问题... ...