javaIO流之基本概念

IO

1.概念

1)IO概念:Java程序对数据的操作是通过“流”IO的方式,IO流用来处理设备间的数据传输(上传和下载文件)
2)流的概念:流是一组有顺序的、有起点有终点的集合(Byte),是对数据传输的一种抽象,它就是为了数据传输。

2.流的分类

1)按照数据流向的不同分为:

类型过程
输入流将持久化的文件数据加载到内存(读取外部数据进入程序)。
输出流将内存中的数据持久化到磁盘(将程序中的数据保存到磁盘)

2)按照处理数据类型的单位不同分为:

类型过程
字节流以字节byte为单位,如:音频、视频、图片(一次读入或者读出8位二进制)
字符流以字符char为单位,如:文本文件(一次读入或读出16位二进制)

注意纯文本数据优先选择字符流,除此之外全部使用字节流。
3)按照角色功能划分为:

类型过程
节点流直接作用于文件的或者直接与数据相连(文件流)如FileInputStream
处理流加速文件的读写操作,在节点流上面套接了一层(主要指缓冲流BufferedInputStream)
3.IO流的体系结构

1)在Java程序中,为了对不同来源和性质的流对象调用统一的方法,Java中的流定义了顶层输入/输出的窗口或者抽象类。满足不同性质具体的流对象就会有同一的方法。
2)在Java中有四个基本的抽象流类型,所有的流都继承于它们四个。

类型/流向输入流输出流
字节流InputStreamOutputStream
字符流ReaderWriter

3)按照角色功能划分

抽象基类节点流缓冲流
InputStreamFileInputStream(字节输入流)BufferedInputStream(字节输入缓冲流)
OutputStreamFileOutputStream(字节输出流)BufferedOutputStream(字符输入缓冲流)
ReaderFileReader(字符输入流)BufferedReader(字符输入缓冲流)
WriterFileWriter(字符输出流)BufferedWriter(字符输出缓冲流)
4.File类

1)File类是Java中处理文件的类
2)其中的方法涉及文件的创建、删除、重命名等,并不包括文件的内容读写,只要涉及到内容一定要IO流来处理。
3)路径:
绝对路径:包含盘符在内的完整文件路径
相对路径:在当前文件目录下的文件路径(相对于Java工程)
:表示电脑磁盘上默认的路径分隔符
\:在Java编译器中使用的形式(在上面的基础上加转义字符)
/:在路径中相当于“\”,是Java程序中路径的另一种表现形式。

		// 绝对路径
		File f1 = new File("d:\\io\\helloworld.txt");
		// 相对路径
		File f2 = new File("hello.txt");
		File f3 = new File("Hello.txt");
		
		System.out.println("获取文件名称"+f1.getName());
		System.out.println("获取文件的目录:"+f1.getPath());
		System.out.println("获取文件的目录:"+f2.getPath());
		// 获取绝对路径
		System.out.println(f1.getAbsolutePath());
		System.out.println(f2.getAbsolutePath());
	
		System.out.println("获取文件所在的父级目录"+f1.getParent());
		// 实现文件重命名(要求原始文件一定存在,目标文件不一定存在)
		boolean renameTo = f2.renameTo(f3);
		System.out.println(renameTo);

4)常用方法:

常用方法含义
exists()判断是否存在
CanWrite()是否可写
canRead()是否可读
isFile()是否为文件
isDirectory()是否为目录
length()文件的长度
lastModify()最后一次修改的时间
createNewFile()新建文件
delete()删除
mkdir()创建文件目录
mkdirs()递归创建目录
list()列出当前目录下的所有文件
listFiles()列出
	@Test
	public void test2() {
		File f1 = new File("d:\\io\\hello.txt");
		File f2 = new File("d:\\io\\oo");
		System.out.println(f1.exists());
		System.out.println(f2.exists());
		System.out.println(f1.canWrite());
		System.out.println(f1.canRead());
		System.out.println(f1.isFile());
		System.out.println(f1.isDirectory());
		System.out.println(f2.isDirectory());
		System.out.println(f1.length());
		// 获取最后一次修改的时间
		long time = f1.lastModified();
		Date date = new Date(time);
		String lastModify = new SimpleDateFormat("yyyy-MM-dd").format(date);
		System.out.println();
	}

还有下面这些:

	@Test
	public void test3() throws IOException {
		File f1 = new File("d:/io/hello.txt");
		// 删除文件
		f1.delete();
		if(!f1.exists()) {
			boolean b = f1.createNewFile();
			System.out.println(b);
		}
		// 创建目录
		File f2 = new File("d:/io/oo1");
		if(!f2.exists()) {
			f2.mkdir();
		}
		// 递归创建
		File f3 = new File("d:/io/a/b/c");
		f3.mkdirs();
		
		// 列出当前目录下所有文件
		File f4 = new File("d:/io");
		String[] list = f4.list();
		for (String string : list) {
			System.out.println(string);
		}
		System.out.println("--------------------");
		File[] files = f4.listFiles();
		for (File file : files) {
			System.out.println(file);
		}
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值