Java 的File类,以及常用方法

文件和文件夹都是用File代表

步骤 1 : 创建一个文件对象

使用绝对路径或者相对路径创建File对象

package file;

import java.io.File;

public class TestFile {

    public static void main(String[] args) {
// 绝对路径
File f1 = new File("d:/LOLFolder");
System.out.println("f1的绝对路径:" + f1.getAbsolutePath());
// 相对路径,相对于工作目录,如果在eclipse中,就是项目目录
File f2 = new File("LOL.exe");
System.out.println("f2的绝对路径:" + f2.getAbsolutePath()); // 把f1作为父目录创建文件对象
File f3 = new File(f1, "LOL.exe"); System.out.println("f3的绝对路径:" + f3.getAbsolutePath());
}
}

步骤 2 : 文件常用方法1

注意1: 需要在D:\LOLFolder确实存在一个LOL.exe,才可以看到对应的文件长度、修改时间等信息

注意2: renameTo方法用于对物理文件名称进行修改,但是并不会修改File对象的name属性

package file;

import java.io.File;
import java.util.Date; public class TestFile { public static void main(String[] args) { File f = new File("d:/LOLFolder/LOL.exe");
System.out.println("当前文件是:" +f);
//文件是否存在
System.out.println("判断是否存在:"+f.exists()); //是否是文件夹
System.out.println("判断是否是文件夹:"+f.isDirectory()); //是否是文件(非文件夹)
System.out.println("判断是否是文件:"+f.isFile()); //文件长度
System.out.println("获取文件的长度:"+f.length()); //文件最后修改时间
long time = f.lastModified();
Date d = new Date(time);
System.out.println("获取文件的最后修改时间:"+d);
//设置文件修改时间为1970.1.1 08:00:00
f.setLastModified(0); //文件重命名
File f2 =new File("d:/LOLFolder/DOTA.exe");
f.renameTo(f2);
System.out.println("把LOL.exe改名成了DOTA.exe"); System.out.println("注意: 需要在D:\\LOLFolder确实存在一个LOL.exe,\r\n才可以看到对应的文件长度、修改时间等信息");
}
}

步骤 3 : 文件常用方法2

package file;

import java.io.File;
import java.io.IOException; public class TestFile { public static void main(String[] args) throws IOException { File f = new File("d:/LOLFolder/skin/garen.ski"); // 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
f.list(); // 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
File[]fs= f.listFiles(); // 以字符串形式返回获取所在文件夹
f.getParent(); // 以文件形式返回获取所在文件夹
f.getParentFile();
// 创建文件夹,如果父文件夹skin不存在,创建就无效
f.mkdir(); // 创建文件夹,如果父文件夹skin不存在,就会创建父文件夹
f.mkdirs(); // 创建一个空文件,如果父文件夹skin不存在,就会抛出异常
f.createNewFile();
// 所以创建一个空文件之前,通常都会创建父目录
f.getParentFile().mkdirs(); // 列出所有的盘符c: d: e: 等等
f.listRoots(); // 刪除文件
f.delete(); // JVM结束的时候,刪除文件,常用于临时文件的删除
f.deleteOnExit(); }
}

练习遍历文件夹

一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。

遍历这个目录下所有的文件(要求遍历子文件夹)

找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名

: 最小的文件不能是0长度

答案

public class ListFiles {

	static long maxSize = 0;
static long minSize = Long.MAX_VALUE;
static File maxFile = null;
static File minFile = null; public static void getFiles(File f){
if(f.isDirectory()){
File[] fs = f.listFiles();
if(null!=fs)
for (int i = 0; i < fs.length; i++) {
getFiles(fs[i]);
}
}
if(f.isFile()){
if(f.length()>maxSize){
maxSize = f.length();
maxFile = f;
}
if(f.length()<minSize && f.length()!=0){
minSize = f.length();
minFile = f;
}
}
} public static void main(String[] args) {
File f = new File("C:/windows");
getFiles(f);
System.out.printf("最大的文件是:%s,其大小是%,d字节%n",maxFile,maxSize);
System.out.printf("最小的文件是:%s,其大小是%,d字节%n",minFile,minSize);
}
}

Java自学-I/O File类的更多相关文章

  1. java之io之file类的常用操作

    java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOE ...

  2. Java IO体系之File类浅析

    Java IO体系之File类浅析 一.File类介绍 位于java.io下的Java File类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等.File对 ...

  3. java io学习之File类

    1.先看下四个静态变量 static String pathSeparator The system-dependent path-separator character, represented a ...

  4. Java的IO操作---File类

    目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...

  5. java之io之File类的list()方法过滤目录的使用

    java的io的知识中,File类必须掌握.File类是对文件或者文件夹的封装.它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等. 如果Fi ...

  6. java io知识点汇总FIle类

    1.路径分隔符问题: 因为java有跨平台行,而在windows和linux中的目录分隔符是不同的.windows是"\" 而linux是"/"  所以必须想办 ...

  7. 【Java IO流】File类的使用

    File类的使用 Java中的File类是在java.io.File中,Java.IO.File类表示文件或目录. File类只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. 一 ...

  8. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  9. java IO(一):File类

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

随机推荐

  1. Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (ST-GCN)

    Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 摘要 动态人体骨架模型带有进行动 ...

  2. helm搭建本地chart仓库及基本操作

    这个步骤,是配合公司的竞赛. 因为公司这次的环境,我们只有namespace权限,而没有整个集群的管理, 而且,公司没有提供统一的helm chart repo, 所以只能自建. 参考URL: htt ...

  3. Nginx+Tomcat实现动静分离和负载均衡

    一.什么是动静分离? Nginx动静分离简单来说就是把动态和静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是将动态请求和静态请求分开,可以理解成使用Nginx处理静态 ...

  4. Python多线程采集百度相关搜索关键词

    百度相关搜索关键词抓取,读取txt关键词,导出txt关键词 #百度相关搜索关键词抓取,读取txt关键词,导出txt关键词   # -*- coding=utf-8 -*- import request ...

  5. 没有该栏目数据, 可能缓存文件(/data/cache/inc_catalog_base.inc)没有更新, 请检查是否有写入权限

    今天朋友在创建新栏目时出现了一个无法生成的错误,提示没有该栏目数据, 可能缓存文件(/data/cache/inc_catalog_base.inc)没有更新, 请检查是否有写入权限,其实这个相对比较 ...

  6. 【Linux】查看端口和进程

    netstat -tunlp ps -ef|grep process_name

  7. Lotus words

    We are going to memorize a lot of words in the fourth grade of primary school. It's very difficult f ...

  8. ESA2GJK1DH1K升级篇: 关于升级篇数据校验

    前言 鉴于大家都希望升级的时候加入数据校验,所以就满足大家的要求. 其实我也希望自己做的足够的稳定可靠,让大家使用起来放心. 上一节测试了一节加入校验以后的操作方式,这节来详细的说一下校验部分的代码. ...

  9. Java实现递归阶乘

    public class Factorial{ public static void main(String[] args){ for (int i = -5; i <= 5; i++) { S ...

  10. 基于GPU的算法并行化

    GPU计算的目的即是计算加速.相比于CPU,其具有以下三个方面的优势: l  并行度高:GPU的Core数远远多于CPU(如G100 GPU有240个Cores),从而GPU的任务并发度也远高于CPU ...