`
百合不是茶
  • 浏览: 348821 次
社区版块
存档分类
最新评论

java IO操作 与 File 获取文件或文件夹的大小,可读,等属性!!!

阅读更多

类 File

File是指文件和目录路径名的抽象表示形式。

1,何为文件:

标准文件(txt doc mp3...)

目录文件(文件夹)

虚拟内存文件

 

2,File类中有可以创建文件的 createNewFile()方法,在创建新文件的时候需要try{} catch(){}因为可能会抛出异常;也有可以判断文件是否是一个标准文件的方法isFile();这些防抖都在java.io的输入输出包中,我们可以直接创建一个文件对象后 再来 调用

 

 

3,使用File类来测试:

package file0521;

import java.io.File;

public class FileDemo {
	
	public static void main(String[] args) {
		
		//获取文件的路径
		String path = "abc\\a.txt";
		
		//用对象表示可以操作对象
		File file = new File(path);
		//创建文件夹
		boolean b=file.mkdirs();
		System.out.println(b);
		
		//获取绝对路径
			String path1 = file.getAbsolutePath();
			//File path1 = file.getAbsoluteFile();
			System.out.println("绝对路径 :"+path1);
			
			//获取相对路径
			String path2 = file.getPath();
			System.out.println("相对路径 :"+path2);
			//获取文件的名称
			String name=file.getName();
			System.out.println("getName:"+name);
			
		long len = file.getFreeSpace();
		System.out.println("getfree:"+len);
		

	}

}

 

运行结果



false
绝对路径 :E:\java\文件的处理\abc\a.txt
相对路径 :abc\a.txt
getName:a.txt
getfree:114963243008

 

 

分析:String path = "abc\\a.txt";是先获取这个路径 \\是分隔符号

创建File的对象,将路径作为其参数;由于文件夹已经是存在的所以返回为false;

文件的描述;使用字符串表示文件的路径

  使用对象表示对象

 

  绝对路径:从根磁盘开始计算的路径

  相对路径:某一文件相对于当前文件的路径

后面的应该能看懂了;

 

 

 

 

2,使用File来判断输入的路径是文件还是文件夹?

    思路分析:

 

a,写一个方法,将需要所有关的全部写入到这个方法中封装起来  

b,创建File的对象并将路径传入其作为参数

c,判断路径是否存在

d,如果存在就保存在数组中

f,判断数组中是否为空

e,遍历数组

G,如果是文件就+1

h,入伏哦是文件夹就+1,文件夹中如果还有文件夹就调用递归

 

代码如下:

package file0521;
/**
 * 编写一个统计文件标准文件的个数
 * @author Administrator
 *
 */
import java.io.*;
public class TestFile {
	
	public static void main(String[] args) {
		String path = "F:\\java开发实例1200";
		int count =countFile(path);
		System.out.println("文件有"+count+"个");
	}
	static int result= 0;
	
	public static int countFile(String path){
	//创建file的对象
	 File file  = new File(path);
	 //判断路径是否存在
	  if(!file.exists()){
		  System.out.println("提供的路径不存在!");
	  return 0;
	  }
	  //将的得到的路径存储到数组中
	  File[] fs =file.listFiles();
	  
	  //判断得到的是否是一个文件
	  if(fs==null){
		  System.out.println("提供的路径不是一个标准文件");
		  return 0;
	  }
	  
	  
	  //遍历数组
	  for(int i =0;i<fs.length;i++){
		  File f = fs[i];
		  String str = f.getAbsolutePath();
	  
	  
	  if(f.isFile()){
		  result++;
		  System.out.println("找到文件"+str);
		  
	  }else if(f.isDirectory()){
                 //调用递归来处理
		  result +=countFile(str);
	  }
	 }	 
	 
	return result;
	
	}

}

 

运算结果:

文件有240489911个

 

递归;程序调用自身的编程技巧称为递归,就是自己调用自己的方法等,递归有时候可以用循环来代替,

 

 

 

 

4,任务:统计文件夹的子文件统计一个文件夹的类型,位子,大小,最后一次修改的时间

(第一版)分析:将文件夹和文件的判断写入一个static方法中,将共同的属性又写一个静态的方法,然后分别条用属性的方法

 

package file0521;

import java.io.*;
/**
 * 
 * @author
 *  统计文件文件或者文件夹的属性
 *
 */

public class Demofile {

	public static void main(String[] args) {
		String path = "E:\\c语言\\c 练习\\interface.cpp";
		wenjian(path);
	}

	public static void wenjian(String path) {

		File file = new File(path);
		// 文件是否存在
		// boolean f1 = file.exists();
		if (file.exists()) {
			// 判断是不是一个isFile();
			if (file.isFile()) {
				System.out.println("文件!!!");
				shuxing(file);
			} else if(file.isDirectory()){
				System.out.println("文件夹!!");
				shuxing(file);
			}else{
				System.out.println("类型无法判断!!!");
			}
		} else {
			System.out.println("文件不存在!请重新输入路径");
		}
	}

	public static void shuxing(File file) {
		 	long len= file.length();
		    System.out.println("文件的长度"+len);
		    //最后一次修改的时间
		    long lasttime = file.lastModified();
		    System.out.println("最后一次修改的时间"+lasttime);
		    //是否隐藏
		    boolean f3 =file.isHidden();
		    System.out.println("是否隐藏"+f3);
		    //是否可写
		    boolean f4 = file.canRead();
		    System.out.println("是否可读"+f4);
		    //是否可读
		    boolean f5=file.canWrite();
		    System.out.println("是否可读"+f5);
		    //获取绝对路径
		    String str1 = file.getAbsolutePath();
		    System.out.println("获取绝对路径"+str1);
		    //获取文件的名称
			String name=file.getName();
			System.out.println("获取文件的名称"+name);
			//返回空闲的空间
			long freespace = file.getFreeSpace();
			System.out.println("返回空闲的空间"+freespace);

	}
}

 

运行结果:(没有得到文件及文件夹的个数)
文件!!!
文件的长度2900
最后一次修改的时间1395579617531
是否隐藏false
是否可读true
是否可读true
获取绝对路径E:\c语言\c 练习\interface.cpp
获取文件的名称interface.cpp
返回空闲的空间114963243008

 

 

 

5,任务:统计文件夹的子文件统计一个文件夹的类型,位子,大小,最后一次修改的时间(本方法可以判别文件夹和文件的个数,但是没有都会判断 其属性,导致运行结果非常乱)

 

分析:将文件夹和文件的判断写入一个static方法中,在方法中判断文件和文件夹的个数,将共同的属性又写一个静态的方法,然后分别条用属性的方法

 

代码如下:

package file0521; 

import java.io.File;

public class Filezuoye {
	static int count;//文件的个数
	static int dir;//目录的个数
	static long size;//大小
	
	public static void main(String[] args) {
		
		String path ="C:\\Users\\Administrator\\Desktop\\html";
		shuxing(path);
		System.out.println("统计完毕,共有" + count + "个文件");
		System.out.println("共有" + dir + "个文件夹");
		System.out.println("总大小" + size + "B");
	
	}
	
	public static void shuxing(String path){
	
		File file = new File(path);
		if(!file.exists()){
			System.out.println("这不是一个文件!");
			return;
		}
		//将得到的子文件保存到数组里面
		File[] f =file.listFiles();
		
		if(f==null){
			System.out.println("不是正确的路径");
		}
		for(int i = 0;i<f.length;i++){
			File fs=f[i];
			//显示获取到的路径
		String str = fs.getAbsolutePath();
		
			//如果是文件
			if(fs.isFile()){
				count++;
				//累加获取到的文件的大小
				size = size + fs.length();
				System.out.println("文件的路径 : "  + str);
				same(file);
			}else if(fs.isDirectory()){
				
				dir++;
				//如果是文件夹就调用用递归来重新统计
				shuxing(str);
				same(file);
			}else{

			}
		}
		
	}
	public static void  same(File file){
		//最后一次修改的时间
	    long lasttime = file.lastModified();
	    System.out.println("最后一次修改的时间"+lasttime);
	    //是否隐藏
	    boolean f3 =file.isHidden();
	    System.out.println("是否隐藏"+f3);
	    //是否可写
	    boolean f4 = file.canRead();
	    System.out.println("是否可读"+f4);


	}

}

 

 

运行结果:

文件的路径 : C:\Users\Administrator\Desktop\html\webpage\css\text.css
最后一次修改的时间1399284088057
是否隐藏false
是否可读true
最后一次修改的时间1399284108953
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\ad1.gif
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\arrow_list.gif
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\banner.jpg
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\footbg.jpg
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\link1.gif
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\link2.gif
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\navbg.jpg
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\navbg2.jpg
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\titlebg.jpg
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\title_nt_1.jpg
最后一次修改的时间1399284035123
是否隐藏false
是否可读true
最后一次修改的时间1399284108953
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\webpage\index.html
最后一次修改的时间1399284108953
是否隐藏false
是否可读true
最后一次修改的时间1400502634106
是否隐藏false
是否可读true
文件的路径 : C:\Users\Administrator\Desktop\html\网页.zip
最后一次修改的时间1400502634106
是否隐藏false
是否可读true
统计完毕,共有13个文件
共有3个文件夹
总大小53794B

 

 

结果分析:运行的结果每次都会调用属性,有多少个文件盒文件夹就会调用多少次;导致程序的可读性较差

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java获取文件夹大小、文件大小,文件个数

    在Java编程中,获取文件或文件夹的大小以及文件个数是常见的操作,尤其是在处理文件上传、存储管理和性能监控等场景。以下将详细介绍如何通过Java实现这些功能。 首先,我们来探讨如何获取单个文件的大小。在Java中...

    Java获取文件或文件夹信息

    除了基本的文件属性,Java还提供了其他高级功能,如遍历目录、读取文件内容、重命名文件等。例如,如果你需要列出指定目录下的所有文件和子目录,可以使用`list()`或`listFiles()`方法: ```java File directory = ...

    java统计文件夹大小

    在Java编程中,统计文件夹大小是一项常见的任务,特别是在处理大量数据或者文件系统操作时。在JDK 7及以上版本中,Java引入了新的`java.nio.file`包,提供了更高效且灵活的方式来处理文件和目录。这个功能实现利用了...

    java文件夹按时间、大小等排序

    我们可以创建`File`对象来代表一个具体的文件或目录,然后通过这个对象获取文件的各种属性,如创建时间、修改时间以及文件大小等。 对于文件夹内的文件按照时间排序,我们可以利用`File`类的`lastModified()`方法,...

    Java 遍历文件夹内文件

    在Java编程中,遍历文件夹内的文件是一项常见的任务,特别是在处理文件系统操作时。这个话题涉及到了Java的I/O(输入/输出)流、文件系统API和递归概念。以下是对这一主题的详细讲解: 首先,Java提供了一个强大的`...

    java移动文件夹下所有文件

    首先,我们需要引入Java的`java.io`包,因为它包含了处理文件操作的所有基本类,如`File`、`FileInputStream`、`FileOutputStream`和`FileUtils`(如果使用Apache Commons IO库)。下面是一段基础的代码示例,展示如何...

    java创建和删除文件夹、文件.doc

    java创建和删除文件夹、文件.doc

    java删除指定文件夹下文件

    在JDK 7及以上版本中,Java提供了一种更加高效且灵活的方式来删除文件,包括递归删除整个文件夹及其子文件,这主要通过`java.nio.file`包中的`Files`类和`SimpleFileVisitor`类来实现。下面我们将详细探讨如何实现这...

    java文件夹及文件复制

    在复制文件或文件夹时,我们通常会用到`File`类和`FileInputStream`与`FileOutputStream`这两个输入输出流类。 1. **`File`类**:代表文件或者目录路径名的抽象表示。它提供了一些方法来创建、删除、重命名文件或...

    FTP中获取文件大小

    总结来说,Java的FTPClient类为我们提供了一种强大且方便的方式来与FTP服务器交互,包括获取文件大小、文件夹属性,以及执行各种FTP命令。了解并熟练运用这些功能,可以极大地提高我们在开发过程中处理文件传输的...

    java的io操作

    Java的IO操作是Java编程中不可或缺的一部分,它允许程序与外部存储设备进行交互,如读取文件、写入文件、创建文件夹等。在Java中,`java.io`包提供了大量的类和接口来支持这些功能。 首先,我们来看如何创建一个新...

    Java中实现复制文件或文件夹

    在 Java 中,实现复制文件或文件夹需要使用 File 类和流操作。下面将详细介绍如何实现复制文件或文件夹的步骤和相关知识点。 复制文件 复制文件的算法相对简单,可以使用缓冲流提高读写数据的效率。下面是复制文件...

    JavaFile文件操作

    在本项目中,"JavaFile文件操作"着重介绍了如何使用`File`类进行文件的基本操作,包括创建文件、复制文件或文件夹、删除文件或文件夹以及剪切文件或文件夹。以下是对这些功能的详细说明: 1. **创建文件** 使用`...

    Java文件、文件夹权限修改的两种方法

    File类是Java中最基本的文件操作类,可以用来修改文件和文件夹权限。下面是一个示例代码: ```java File dirFile = new File(dirPath); dirFile.setReadable(true, false); dirFile.setExecutable(true, false); dir...

    java的各种io操作

    Java的IO操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,包括读取文件、写入文件、复制文件、创建目录等。在Java中,IO操作主要依赖于`java.io`包中的类和接口。 1. **新建目录**: 在Java中,我们...

    java删除文件夹的代码

    它提供了许多方法,如创建、删除、重命名文件或目录,以及获取文件属性等。删除文件夹时,我们通常需要确保文件夹为空,否则会因为文件夹非空而导致删除失败。在不使用递归的情况下,我们可以用循环来遍历文件夹内的...

    java读取win共享文件夹

    - `SmbFile`类提供了类似Java`File`的API,如`exists()`, `isDirectory()`, `listFiles()`等,用于检查文件夹、列出子文件和目录。 - 使用`SmbFileInputStream`读取文件内容,`SmbFileOutputStream`写入文件。 4....

    JAVA 的IO流的文件复制

    在Java编程语言中,IO(Input/Output)流是处理数据输入和输出的重要工具,尤其在文件操作中显得尤为重要。本篇文章将详细讲解如何使用Java的IO流进行文件复制,以及如何实现整个文件夹的复制,并检查复制是否成功。...

    java.io包中的File类.doc

    Java.io 包中的 File 类是 Java 语言中代表磁盘文件本身的对象,定义了一些与平台无关的方法来操纵文件。通过调用 File 类提供的各种方法,能够完成创建、删除文件,重命名文件,判断文件的读写权限及是否存在,设置...

    java复制文件及复制文件夹

    在Java编程中,复制文件和复制文件夹是常见的操作,特别是在处理数据迁移、备份或程序部署时。下面我们将深入探讨如何使用Java实现这些功能,并提供相关的代码示例。 首先,让我们看看如何复制单个文件。Java标准库...

Global site tag (gtag.js) - Google Analytics