java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5023| 回复: 0

java file类的概述和常用操作

java file类的概述和常用操作

1、概述

使用IO流类读写文件的内容, 如果对文件/文件夹进行操作,可以使用File类

package com.wkcto.chapter06.file;

import java.io.File;
import java.io.IOException;

/**
 * 创建File对象
 * @author 蛙课网
 *
 */
public class Test01 {

	public static void main(String[] args) throws IOException {
		//通过File构造方法的参数指定路径 ,File对象既可以是文件夹,也可以是文件
		File  f1 = new File("d:/java1");
		File  f2 = new File("d:/java2");
		f1.mkdir(); 			//创建文件夹
		f2.createNewFile(); 	//创建文件
		
		//通过File构造方法的第一个参数指定上级目录
		File f3 = new File("d:/java1", "sub1");
		File f4 = new File("d:/java1", "sub2");
		f3.mkdir();
		f4.createNewFile();
		
		File  f5 = new File(f3, "sub3");
		File  f6 = new File(f3, "sub3");
		//f5和f6两个对象重名
		f5.mkdir();						//创建了sub3文件夹
		f6.createNewFile();  			//创建sub3文件夹, 出现了重名现象, 创建失败
		
		//在创建File对象,也可以使用相对路径 , 相对于当前项目的路径
		File f7 = new File("folder");
		File f8 = new File("bin/folder2");
		f7.mkdir();
		f8.mkdir();
	}

}

package com.wkcto.chapter06.file;

import java.io.File;

/**
 * File文件/路径的分隔符
 * @author 蛙课网
 *
 */
public class Test02 {

	public static void main(String[] args) {
		System.out.println( File.separator);			// 在windows系统中文件默认分隔符是反斜杠
														//在其他操作系统中, 如Linux, 文件分隔符是斜杠 /
		System.out.println( File.pathSeparator);		//; 路径分隔符
	}

}

2、File的常用操作

boolean

createNewFile() 创建一个新的文件

boolean

delete() 删除File对象

boolean

exists() 判断当前File对象是否存在

File

getAbsoluteFile() 返回File对象的绝对路径形式

String

getAbsolutePath()返回File对象的绝对路径

long

getFreeSpace() 返回指定盘符空闲空间的大小

String

getName() 返回File对象的名称

String

getParent() 返回上一级目录

File

getParentFile()返回上一级目录

String

getPath() 返回路径

long

getTotalSpace() 返回指定盘符总的大小

long

getUsableSpace()返回指定盘符可用空间的大小

boolean

isAbsolute() 判断是否为绝对路径

boolean

isDirectory() 判断是否为文件夹

boolean

isFile() 判断是否为文件

boolean

isHidden() 判断是否为隐藏

long

lastModified() 最后一次修改的时间,是从1970-1-1 00:00:00经过的毫秒数

long

length() 文件长度

String[]

list() 列出文件夹中的内容

String[]

list(FilenameFilter filter) 列出文件夹中的内容,指定文件过滤器

File[]

listFiles()列出文件夹中的内容

File[]

listFiles(FileFilter filter) 列出文件夹中的内容

File[]

listFiles(FilenameFilter filter) 列出文件夹中的内容

static File[]

listRoots() 列出根目录

boolean

mkdir() 创建文件夹.如果上一级目录不存在,则文件夹创建失败

boolean

mkdirs()创建文件夹. 如果上一级目录不存在,先创建上一级目录,再创建当前文件夹

boolean

renameTo(File dest) 重命名,如果dest对象和当前File对象不在同一个目录中,相当于文件移动

Path

toPath()

String

toString()

URI

toURI()

package com.wkcto.chapter06.file;

import java.io.File;

import java.io.IOException;

import java.util.Date;

/**

* 演示文件的相关属性

* @author 蛙课网

*

*/

public class Test03 {

public static void main(String[] args) throws IOException {

// File f1 = new File("D:\JavaSE\video\5-24 Map集合概述.avi"); //绝对路径

File f1 = new File("hehe.txt"); //相对路径

f1.createNewFile();

System.out.println( f1.getAbsolutePath() );

System.out.println( f1.getPath());

System.out.println( f1.getParent());

System.out.println( f1.getName());

System.out.println( f1.isDirectory());

System.out.println( f1.isFile());

System.out.println( f1.length());

System.out.println( f1.lastModified());

System.out.println( new Date(f1.lastModified()));

}

}

package com.wkcto.chapter06.file;

import java.io.File;

import java.io.FilenameFilter;

/**

* 演示文件夹的相关操作

* @author 蛙课网

*

*/

public class Test04 {

public static void main(String[] args) {

String folder = "d:/java1" ;

//显示指定文件夹的内容

listsubDir( folder );

}

//显示指定文件夹的内容, 只显示.txt文本文件

private static void listsubDir(String folder) {

File dir = new File(folder);

//列出指定文件夹的内容

File[] listFiles = dir.listFiles(new FilenameFilter() {

//在匿名内部类对象中重写抽象方法

@Override

public boolean accept(File dir, String name) {

return name.endsWith(".txt") || name.endsWith(".java");

}

}) ;

for (File file : listFiles) {

System.out.println( file.getAbsolutePath() );

}

}

//显示指定文件夹的内容

private static void listsubDir2(String folder) {

File dir = new File(folder);

//列出指定文件夹的内容

File[] listFiles = dir.listFiles();

for (File file : listFiles) {

System.out.println( file.getAbsolutePath() );

}

}

//显示指定文件夹的内容

private static void listsubDir1(String folder) {

File dir = new File(folder);

//列出指定文件夹的内容

String[] subdirs = dir.list();

for (String string : subdirs) {

System.out.println( string );

}

}

}

package com.wkcto.chapter06.file;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

/**

* 演示文件夹操作的递归调用

* @author 蛙课网

*

*/

public class Test05 {

public static void main(String[] args) {

String folder = "d:/java1";

// 显示指定文件夹的内容

// listsubDir(folder);

//文件夹的复制

copyDir( folder , "d:/java22");

}

//创建方法, 把srcfolder文件夹的内容复制到destFolder文件夹中, 包括子文件夹的内容

private static void copyDir(String srcFolder, String destFolder) {

//判断目标文件夹是否存在,如果不目标文件夹不存在,需要创建一个新的文件夹

File dest = new File(destFolder);

if ( !dest.exists() ) {

dest.mkdirs();

}

//遍历srcFolder源文件夹的内容, 复制到destFolder目录中

File src = new File(srcFolder);

File[] listFiles = src.listFiles();

for (File file : listFiles) {

if (file.isFile()) {

// 直接复制文件 , 需要先构建目标文件

File destFile = new File(destFolder, file.getName());

copyFile( file, destFile); //复制文件

}else{

//file是文件夹, 先在destFolder文件夹下创建一个与file同名的文件夹

File destSubDir = new File(destFolder, file.getName() );

// destSubDir.mkdir();

//再把file文件夹的内容复制到destFoler/file目录下

copyDir(file.getAbsolutePath(), destSubDir.getAbsolutePath());

}

}

}

//文件复制

private static void copyFile(File srcfile, File destFile) {

try(

FileInputStream fis = new FileInputStream(srcfile);

FileOutputStream fos = new FileOutputStream(destFile);

) {

byte [] bytes = new byte[1024];

int len = fis.read(bytes);

while ( len != -1){

fos.write(bytes, 0, len);

len = fis.read(bytes);

}

} catch (Exception e) {

// TODO: handle exception

}

}

// 显示指定文件夹的内容, 包括子文件夹的内容

private static void listsubDir(String folder) {

File dir = new File(folder);

// 列出指定文件夹的内容

File[] listFiles = dir.listFiles();

for (File file : listFiles) {

System.out.println(file.getAbsolutePath());

//判断file对象如果是文件夹, 把file子文件夹的内容也显示出来

if (file.isDirectory() ) {

listsubDir( file.getAbsolutePath() ); //递归调用

}

}

}

}

总结:

必须掌握FileInputStrea/FileOutputStream字节流实现文件的读写

掌握FileReader/FileWriter字符流实现文件的读写

理解对象序列化与反序列化


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1193_1_1.html

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018