Java基础篇-File IO编程
如果自学时候 对于IO可能会有恐惧感
如果要学好IO 必须清楚抽象类? 为什么
IO的操作部分,重点掌握两个代码模型
IO核心组成:
五个类:
File
OutputStream
InputStream
Writer
Reader
File类详解
在java.io当中
File类是唯一一个与文件本身(文件的创建,删除,取得文件信息)有关的程序类
File类的基本使用:
java.io.File是一个普通的类,直接产生实例化对象即可
两个常用的构造方法
public File(String pathname)
public File(File parent, String child)
设置父路径和子文件
常用方法:
创建新文件: public boolean createNewFile() throws IOException
只是创建文件本身,对于文件内容不做处理
删除文件: public boolean delete()
判断文件是否存在: public boolean exists()
对于路径分隔符 Windows 是 \
UNIX 是 /
定义一个常量
public static final String separator
JVM来决定最终的separator是什么内容
同名文件的删除可能会存在一定的延迟
File file = new File("d:\\helllo.txt");
File file = new File("d:" + File.separator + "hello.txt");
file.createNewFile() //只是创建文件
File类
如果要处理文件内容,需要通过文件流来进行操作
java.io包当中存在两种流: 字节流 与 字符流
字节操作流
- InputStream: 字节输入流
- OutputStream: 字节输出流
字符流:
- 输入流: Reader
- 输出流: Writer
字节流是原生的操作
网络数据传输,磁盘数据保存的支持的数据类型只有字节 没有, 而磁盘中的数据必须读取到内存之后才可以操作,内存可以将字节转换为字符
基本操作流程固定:
- 根据文件路径创建File类对象
- 根据字节流或字符流的子类实例化父类对象
- 进行数据的读取、写入操作
- 关闭流
close()
方法
对于IO操作属于自愿处理,所有资源处理操作必须进行关闭,如果项目内没有执行关闭,可能只能整个项目全部重启才能关闭
java.io.OutputStream
一定要看
类的定义结构
public abstract class OutputStream extends Object implements Closeable, Flushable
两个接口
Closeable
: public void close() throws IOException
Flushable
: public void flush() throws IOException
而在OutputStream类里还定义其它方法
一个接口(Serializable)
BufferedReader类
类定义结构
public class BufferedReader extends Reader
public String readLine() throws IOException
public BufferedReader(Reader in)
默认的换行模式是BufferedReader最大确定 根据回车进行换行
接收类型为String, 可以进行正则处理同时可以转换为各种的数据模式
public class Demo {
public static void main(String[] args) throws Exception {
BufferReader buf = new BufferReader(new InputStream)
System.out.println()
System.out.println()
已经被Scanner
所替代
打印流解决OutputStream缺陷
java.util.Scanner 可以解决BufferedReader类缺陷
Scanner 是一个专门进行数据流处理的程序类
java.util.Scanner
类的定义
public
判断是否有指定类型的数据: public boolean hasNextXXX();
取得只能类型的数据 public boolean nextXXX();
hasNext()
String next()
public class Demo {
Scanner scan = new Scanner(System.in);
System.out.print();
if (scan.hasNextInt()) {
int
系统输出: out err
调试过程 log 日志的模式输出