Java输入输出流一:File类

本文介绍了Java中File类的基本概念及常见方法,包括如何创建文件、目录,以及如何判断文件是否可读、可写等属性。同时,通过示例代码展示了不同构造方法的应用,以及如何处理绝对路径与相对路径。

一:输入输出流

●输入流:                                                                                                                

常见的输入设备有键盘、扫描仪、文件等;

●输出流:

常见的输出设备有屏幕、打印机、文件等;

●文件,既可以作为输入设备,又可以作为输出设备:

        文件作为输入设备时:是读取文件中的内容;即输入流是读取数据;

        文件作为输出设备时:是写文件;即输出流是写数据,将一些数据写到文件中去;


二:File类

●什么是文件:文件可认为是相关记录或放在一起的数据的集合;

●Java中,使用java.io.File类对文件进行一系列的操作;Java中的File对象,不区分文件和目录,二者都是“文件”。

……………………………………………………

File类简介

File类的构造方法:

File类的常用方法:主要目的是知道有这个方法,具体用的时候,如果不清楚再去查API:

●canRead():文件是否可以读;

●canWrite():文件是否可以写;

●exists():当前的文件或目录是否存在;

●getName():获取文件或路径的名称;

●isDirectory():是否是目录;(如果一个文件不存在,那么这个方法返回false)

●isFile():是否是文件;(File对象是不区分文件和目录的;)(如果一个文件不存在,那么这个方法返回false)

●lastModified():文件的最后一次修改时间;

●isHidden():是否是一个隐藏文件;

●midir():创建目录;

●midirs():创建多级目录;

等等,主要留个印象,知道File类可以干什么,然后具体应用时,不清楚可以去查API。

……………………………………………………

File示例:File类主要用于文件、目录的创建,并不涉及具体文件内容的读写

(1)三种创建File对象的方式:(File类的三种构造方法的演示)

public class FileDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// (一)创建文件的第一种方式;(2)"\"本身是一个转义字符,两个反斜杠才代表一个反斜杠;(3)再Linux系统的写法:"c:/";
		//File file1 = new File("c:\\imooc\\io\\score.txt");
		// (二)创建文件的第二种方式;
		//File file1 = new File("c:\\imooc","io\\score.txt");
		// (三)创建文件的第三种方式;有些业务场景需要File的这种构造方法
		File file = new File("c:\\imooc");
		File file1 = new File(file,"io\\score.txt");
		System.out.println(file1.exists());
		System.out.println(file1.isFile());
		System.out.println(file1.isDirectory());
	}
}

……………………………………………………

(2)创建目录:mkdir()和mkdirs()

public class FileDemo {

	public static void main(String[] args) {		
		// 创建一个目录
		File file2 = new File("c:\\imooc\\set","HashSet");
		// 如果文件不存在,再去创建;经过实测,如果去创建一个存在的目录,并不会引起什么问题,文件中的内容并没有消失;换句话说,创建一个已经存在的目录,并是把原文件夹删除然后再原样新建一个;
		if(!file2.exists()){
			file2.mkdir();// file2.mkdirs() 实测发现,创建单级目录时,也可以使用mkdirs()方法;
		}
		// 创建一个多级目录
		File file3 = new File("c:\\imooc\\set\\LinkSet\\mm");
		if(!file3.exists()){
			file3.mkdirs();// 实测发现,如果是创建多级目录,调用mkdir()方法不会报错,也不会创建目录
		}		
	}
}

……………………………………………………

(3)创建文件:createNewFile();(I/O异常是检查异常,需要捕获)

public class FileDemo {

	public static void main(String[] args) {	
		// 创建文件
		File file1 = new File("c:\\imooc\\io\\score.txt");   // 如果是"c:\\imooc\\io\\score",其还是会创建文件,只是一个没有扩展名的score文件
		if(!file1.exists()){
			// I/O异常是检查异常,需要捕获
			try {
				file1.createNewFile();  // 实测发现,如果一个文件已经存在了,还去调用createNewFile方法,其并不会损伤原文件,即这个创建文件的操作没有执行
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
}

三:绝对路径和相对路径

●绝对路径:"c:\\imooc\\io\\score.txt",从盘符(这儿是c盘)开始的;

●相对路径:不从盘符开始,是一个相对的位置;从当前路径开始的路径,当前路径大概率是当前Java文件所在的路径

相对路径三个例子:

(1)Java文件和要操作的文件处于同一目录:不涉及目录的切换,直接文件名即可;

public class FileDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f = new File("thread.txt");
		System.out.println(f.exists());

	}

}

(2)Java文件在待处理文件的上级目录中时;

public class FileDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f = new File("thread\\thread.txt");
		System.out.println(f.exists());

	}
}

(3)Java文件和待处理文件处在不同的文件夹时;涉及文件夹的上跳和下转;

其中的“..”代表上跳一级目录

public class FileDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f = new File("..\\thread\\thread.txt");
		System.out.println(f.exists());

	}

}

IDE中(这儿是eclipse为例)中当前路径是工程所在目录的根目录:

工程根目录:

直接创建创建文件:

public class FileDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f1 = new File("thread.txt");
		try {
			f1.createNewFile();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

}

发现,thread.txt文件的创建位置是工程根目录

……………………………………………………

获取绝对路径和相对路径的示例:这个例子很简单,稍微一看就行

public class FileDemo {

	public static void main(String[] args) {		
		File f = new File("thread\\thread.txt");
		try {
			f.createNewFile();
			// 判断是否是绝对路径
			System.out.println(f.isAbsolute());
			// 获取相对路径
			System.out.println(f.getPath());
			// 获取绝对路径
			System.out.println(f.getAbsolutePath());
			// 获取文件名
			System.out.println(f.getName());
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

输出结果:

false
thread\thread.txt
E:\java_tools\InputAndOutput\thread\thread.txt
thread.txt

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值