IO-1(Java IO、File类)
1. 简介
之前的程序,数据都存储在内存中,一旦运行结束,数据消失。
数据持久化存储:将内存中的数据存储到内存以外的持久化设备中(硬盘,光盘、U盘等)。
OS中,数据都保存文件存放在相应的文件夹。
集合只能在内存中临时存储数据,要长期存储需要用到IO流。
1.1 IO
输出(写)output:需把内存中的数据存储到持久化设备中
输入(读)input:把持久化设备上的数据读到内存中
1.2 Java IO流
流可被看做一组有序的字节集合,本质是数据传输,根据处理数据类型的不同,流可分为:
- 字节流:以字节(8 bit)为单位,包含两个抽象类:
- InputStream(输入流)
- OutputStream(输出流)
- 字符流:以字符(16 bit)为单位,根据码表映射字符,一次可以读多个字节,包含两个抽象类:
- Reader(输入流)
- Writer(输出流)
字节流在处理输入输出时不会用到缓存,而字符流用到了缓存。
流向 | ||||
输入流 | 读数据 | FileReader | Reader | |
输出流 | 写数据 | FileWriter | Writer | |
数据类型 | ||||
字节流 | ||||
字节输入流 | 读数据 | InputStream | ||
字节输出流 | 写数据 | OutputStream | ||
字符流 | ||||
字符输入流 | 读数据 | Reader | ||
字符输出流 | 写数据 | Writer |
JavaIO设计时采用了Decorator(装饰者)设计模式。
其中ByteArrayInputStream、StringBufferInputStream、FileInputStream和PipedInputStream是Java提供的最基本的对流进行处理的类。
FilterInputStream为一个封装类的基类,可以对基本的IO类进行封装。
使用这种设计模式好处:可以在运行时动态地给对象添加一些额外的职责,与使用继承的设计方法相比该方法具有很好的灵活性。
2. File类
io包中
File类的实例不可改变
它是File文件和目录路径名的抽象表示。Java中,把文件或目录(文件夹)都封装成了File对象。
2.1 创建File对象
用构造函数
File(String pathname):将指定的路径名转换为一个File对象
File(String parent,String child):根据指定的父路径和文件名(文件路径)创建File对象
File(File parent,String child):根据父路径对象和文件路径创建对象
String pathName="e:\\java_code\\hello.java";
File f1=new File(pathName);
//创建了一个File对象f1指向了一个路径;
//若hello.java存在,不会创建它只是指向路径File f2=new File("e:\\java_code\\hello.java");File dir=new File("e:\\java_code");
File f3=new File(dir,"hello.java");
2.2 常用方法
1、获取文件的绝对路径,即全路径:getAbsolutePath()
String abspath=f1.getAbsolutePath();
- 绝对路径:以盘符开头,固定,不可改变的路径
- 相对路径:不能以盘符开头,相对某个参照物的。在eclipse中相对于当前项目的根目录,与src平级。
2、获取File封装的路径:getPath()
String path=f1.getPath();
3、获取文件名称和文件夹名称:getName()
String fileName=f1.getName();
4、获取文件大小(字节数):length()——bytes
long size=fi.length();
2.3 File类操作
File file=new File("e:\\file.txt");
1、创建文件:createNewFile()
- 若文件不存在,创建,返回true
- 若文件存在,不创建,返回false
- 路径错误,IOException
boolean b1=file.createNewFile();
2、删除文件夹(不去回收站):delete()
boolean b2=file.delete();
3、判断文件是否存在:exists()
boolean b3=file.exists();
4、对目录的操作
①创建单个目录:mkdir()
File dir=new File("e:\\abd");
boolean b4=dir.mkdir();
和createFile()类似。
②创建多个目录:mkdirs()
File dir=new File("a\\b\\c");
boolean b5=dir.mkdirs();
"a\\b\\c"父路径不存在时也会创建
③删除:delete()
boolean b5=dir.delete();
只有将目录中的内容都删除,保证目录为空,才能删除此目录。
5、判断时文件还是目录
file.exists();
file.isFile();
file.isDictionary();
以上三个方法都返回的是boolean值。
6、获取目录下的当前文件以及文件夹的名字:list()
File dir=new File("e:\\java");
String[] names=dir.list();
for(String name:names){System.out.println(name);
}
7、获取目录下当前文件以及文件对象:listFiles()
File[] files=dir.listFiles();
for(File file:files){System.out.println(file);
}
注:6、7中,获取时需确定目录存在,而且指定的必须是目录。
否则易返回null,出现NullPointerException
IO-1(Java IO、File类)相关推荐
- file数组 删除文件_java编程IO基础之一:File类
在整个java.io包中,File类是唯一的一个与文件本身操作有关的类,既可以执行文件的创建.删除.重命名,取得文件大小和修改日期. File的构造函数: public File(String pat ...
- 手把手带你入门Java中File类
零基础学习Java之File类 概述 构造方法 基本介绍 代码示例 常用方法 获取文件和目录的基本信息 代码示例 判断功能 代码示例 创建和删除功能 代码示例 目录遍历功能 代码示例 概述 要学习Ja ...
- Java之File类
一.初见File类 java.io.File类代表系统中的文件(文件或目录) 常用构造方法 File(String pathname) File(String parent, String child ...
- java基础---File类
package com.henu.io; /** ????????????????* 提出问题,当File创建文件后,为什么在磁盘中找不到,即file.exists返回false,* 当你在磁盘中创建 ...
- 一文读懂Java中File类、字节流、字符流、转换流
一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...
- Java 通过File类的listFiles()遍历文件夹
#博学谷IT学习技术支持# 首先我们看下File类的listFiles()的源码: public File[] listFiles() {String[] ss = list(); //用ss存放子文 ...
- java io ioexception,java.io.IOException
catch(java.io.IOException e){ ECLIPSE下LWUIT问题啊??java.lang.ClassNotFoundException'>java.lang.Class ...
- Java中File类之createNewFile、mkdirs
Java中File类 1. 概述 2. mkdirs与mkdir区别 2.1 基本概念 2.2 程序实例 3. createNewFile 3.1 基本概念 3.2 程序范例 1. 概述 File 对 ...
- java.io.eof_java.io.IOException: java.io.EOFException: Unexpected end of input stream错误
报错现象: Diagnostic Messages for this Task: Error: java.io.IOException: java.io.EOFException: Unexpecte ...
- java getabsolutepath,详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 返回绝对路径,但不会处理"."和".."的情况 ...
最新文章
- JQuery笔记(一)
- 深入理解gradle中的task
- 数据结构-栈在括号匹配中的应用
- 垃圾收集算法,垃圾收集器_弱,弱,最弱,利用专家参考来管理垃圾收集器
- 【软件架构】三层架构和MVC的比较
- 数字图像处理(四)——图像编码技术(二)
- smarty 模板 php,PHP smarty模板
- 使用Mybatis拦截器实现数据分表
- android堆内存解析,heapsnap HeapSnap 是一款针对 Android 进程堆内存进行追踪、定位,以便查出泄露位置的工具 @codeKK c开源站...
- 分享四个一键生成神器:Logo、App、小程序、H5等五分钟快速搞定
- 【angular5】浅谈angular5与serviceWorker——(2)
- Redux和react-redux的区别是什么?
- 本地配置多个git账户(公司、GitHub)
- 深入Spring Boot: 怎样排查 java.lang.ArrayStoreException
- C/C++头文件汇总
- jsp中的文件操作(一)
- SAS 年月日时分秒转年月日
- 《从祖先到算法—加速进化的人类文化》简评
- 万能表单解析工具在xheditor上传文件中的应用
- flex结合Lcds整合spring