Java基础20(文件操作 IO流 InputStream字节输入流 OutputStream字节输出流 Writer 字符输出流)

目录

一、File 文件对象

1. 创建对象

2. 相对路径和绝对路径

3. 一些方法

汇总:

获取文件信息1:

判断文件:

删除文件:

创建文件:

获取文件信息2:

4. 小结

二、IO流

1. InputStream字节输入流

1.1 构造方法

1.2 读取

1.3 BufferedInputStream

1.4 小结

2. OutputStream字节输出流

2.1 构造方法

2.2 写入

2.3 BufferedOutputStream

2.4 实现文件的复制

2.5 小结

3. Writer字符输出流

3.1 构造方法

3.2 一些方法

3.3 BufferedWriter 

4. Reader 字符输入流


一、File 文件对象

在计算机系统中,文件是非常重要的存储方式。Java的标准库java.io提供了File对象来操作文件和目录。要构造一个File对象,需要通过构造方法,传入该文件的本地物理路径。

创建文件和文件夹:

// 创建一个存在的文件夹
		File f1 = new File("D:\\课件整理和发送\\javaSE2404班\\Test");
		// 创建一个存在的文件
		File f2 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\a.txt");
		// 创建一个不存在的文件夹
		File f3 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\aaa");
		// 创建一个不存在的文件
		File f4 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\b.txt");

1. 创建对象

构造方法1:

public File(String pathname):以pathname为路径创建File对象,可以是绝对路径或者相对路径

构造方法2:

public File(String parent,String child)以parent为父路径,child为子路径创建File对象

构造方法3:

public File(File parent,String child)根据一个父File对象和子文件路径创建File对象

示例:

// 构造方法2
		// public File(String parent,String child)
		// 以parent为父路径,child为子路径创建File对象
		String parent = "D:\\课件整理和发送\\javaSE2404班\\Test";
		String child = "b.txt";
		File f1 = new File(parent, child);
		System.out.println(f1);

		// 构造方法3
		// public File(File parent,String child)
		// 根据一个父File对象和子文件路径创建File对象
		File parentF1 = new File(parent);
		File f2 = new File(parentF1, child);
		System.out.println(f2);

注意事项:
●一个File对象代表指向硬盘中的一个文件或者目录路径
●无论该路径下是否存在文件或者目录,都不影响File对象的创建

2. 相对路径和绝对路径

构造File对象时,既可以传入绝对路径,也可以传入相对路径。绝对路径是以根目录开头的完整路径。
注意:Windows平台使用\作为路径分隔符,在Java字符串中需要用\\表示一个\。

File f = new File("C:\\Windows\\notepad.exe");

Linux平台使用/作为路径分隔符:

File f = new File("/usr/bin/javac");

绝对路径:从盘符开始

传入相对路径时,相对路径前面加上当前目录就是绝对路径,可以用.表示当前目录,..表示上级目录。

// 假设当前目录是C:\Docs
File f1 = new File("sub\\javac"); // 绝对路径是C:\Docs\sub\javac
File f3 = new File(".\\sub\\javac"); // 绝对路径是C:\Docs\sub\javac
File f3 = new File("..\\sub\\javac"); // 绝对路径是C:\sub\javac

File对象有3种形式表示的路径,一种是getPath(),返回构造方法传入的路径,一种是getAbsolutePath(),返回绝对路径,一种是getCanonicalPath(),它和绝对路径类似,但是返回的是规范路径。

//public String getAbsolutePath():获取文件的绝对路径
//		 public String getPath() :获取路径,返回定义文件时使用的路径
//		 public String getCannoicalPath() 获取规范路径
		
		File f1=new File("D:\\课件整理和发送\\javaSE2404班\\Test\\a.txt");
	    System.out.println("文件的绝对路径:"+f1.getAbsolutePath());
	    System.out.println("获取路径            :"+f1.getPath());
	    System.out.println("获取规范路径    :"+ f1.getCanonicalPath());
        System.out.println("=============f2=================");
	    File f2 = new File("sub\\javac"); 
	    System.out.println("文件的绝对路径:"+f2.getAbsolutePath());
	    System.out.println("获取路径            :"+f2.getPath());
	    System.out.println("获取规范路径    :"+ f2.getCanonicalPath());

	    System.out.println("=============f3=================");
	    File f3 = new File(".\\sub\\javac"); 
	    System.out.println("文件的绝对路径:"+f3.getAbsolutePath());
	    System.out.println("获取路径            :"+f3.getPath());
	    System.out.println("获取规范路径    :"+ f3.getCanonicalPath());

	    
	    System.out.println("=============f4=================");
	    File f4 = new File("..\\sub\\javac");
	    System.out.println("文件的绝对路径:"+f4.getAbsolutePath());
	    System.out.println("获取路径            :"+f4.getPath());
	    System.out.println("获取规范路径    :"+ f4.getCanonicalPath());

运行结果:

3. 一些方法

汇总:

获取文件信息:
    

public String getName() :获取文件的名称,带后缀
public long length() :获取文件长度(即:字节数---真实的大小)。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值 
使用new Date(f1.lastModified());// 返回的是当天时间
public String getAbsolutePath():获取文件的绝对路径
public String getPath() :获取路径,返回定义文件时使用的路径
public String getCannoicalPath() 获取规范路径
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组---注意返回类型
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组----返回时File
注意:
1.在使用时要确认其是一个目录(如果是文件返回为null,如果没有权限访问此目录返回也是null)

2.当文件对象代表一个空文件夹时 返回一个长度为0的数组

3.当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回

4.单文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放入File数组中放回,包含隐藏文件

判断文件:
        

public boolean exists() :判断是否存在
public boolean isDirectory():判断是否是目录
public boolean isFile() :判断是否是文件
public boolean canRead() :判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden() :判断是否隐藏

删除文件:

public boolean delete():删除此抽象路径名表示的文件或者文件夹

注意:delete方法只删除文件和空文件夹,是直接删除不走回收站

创建文件:

public boolean createNewFile()创建文件。若文件存在,则不创建,返回false
public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建

获取文件信息1:

●public String getName() :获取文件的名称,带后缀
●public long length() :获取文件长度(即:字节数---真实的大小)
。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。
●public long lastModified() :获取最后一次的修改时间,毫秒值

// 创建一个存在的文件夹
		File f1 = new File("D:\\课件整理和发送\\javaSE2404班\\Test");
		// 创建一个存在的文件
		File f2 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\a.txt");
		// 创建一个不存在的文件夹
		File f3 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\aaa");
		// 创建一个不存在的文件
		File f4 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\b.txt");
		
		
		// public String getName() :获取文件的名称,带后缀
		// public long length() :获取文件长度(即:字节数---真实的大小)。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。
		// public long lastModified() :获取最后一次的修改时间,毫秒值

		System.out.printf("[%s]目录的长度[%d],最后一次修改时间[%s]\n",f1.getName(),f1.length(),new Date(f1.lastModified()));
		System.out.printf("[%s]文件的长度[%d],最后一次修改时间[%s]\n",f2.getName(),f2.length(),new Date(f2.lastModified()));
		System.out.printf("[%s]目录的长度[%d],最后一次修改时间[%s]\n",f3.getName(),f3.length(),new Date(f3.lastModified()));
		System.out.printf("[%s]文件的长度[%d],最后一次修改时间[%s]\n",f4.getName(),f4.length(),new Date(f4.lastModified()));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯诺依曼转世

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值