课程名称:Java体系课
章节名称:通过I/O实现文件的读取与写入(上)
课程内容:
- I(输入)/O(输出)
- File类
- 通过字节字符流实现文件读取与写入
学习收获:
- I(输入)/O(输出)
IO(输入/输出)是所有程序都必需的部分
使用输入机制,允许程序读取外部数据(包括来自磁盘、光盘等存储设备的数据)、用户输入数据
使用输出机制,允许程序记录运行状态,将程序数据输出到磁盘、光盘等存储设备中
- java.io包
Java的IO通过java.io包下的类和接口来支持
按出入的方向可分为:输入(input)与输出(output)
按内容类型可分为:字节流与字符流
- File类
File类是java.io包下代表与平台无关的文件和目录
程序中操作文件和目录,都可用通过File类来完成,File能新建、删除、重命名文件和目录
File类并不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流
为了多平台兼容,文件路径间隔符建议使用反斜杠 /,如果用\需要两个\,转义字符
类方法:
String getPath()
boolean createNewFile()
boolean exists()
boolean isDirectory()
boolean isFile()
long length()
String getName()
boolean delete()
boolean mkdir() / mkdirs()
- 通过字节字符流实现文件读取与写入
1.流——Stream
Java把传输的数据抽象成流(Stream)的概念,简化了程序处理
四种抽象类:字节输入流—InputStream;字节输出流—OutputStream;字符输入流—Reader;字符输出流—Writer
2.字节输入流—InputStream
InputStream是所有字节输入流的父类
InputStream提供核心方法read(),用于读取字节数据
FileInputStream类专用于读取二进制文件
Closeable接口中只有一个close()方法用于关闭流并释放与之相关联的任何系统资源。
3.字节输出流——OutputStream
OutputStream是所有字节输出流的父类
OutputStream提供核心方法write(),用于向指定输出流输出字节数组
FileOutputStream类专用于写入二进制文件
Flushable接口清空缓冲区的数据,并将数据写到文件中,当使用flush方法之后可以对文件进行操作;
4.InputStream、OutputStream通用开发模式
public static void main(String[] args) {
File source = new File("d:/demo.jpg");
File target = new File("d:/demo1.jpg");
InputStream fis = null;
OutputStream fos = null;
try {
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
byte[] bs = new byte[1024];
int len;
while((len = fis.read(bs)) != -1){
System.out.println(len);
fos.write(bs,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
课程截图
打开App,阅读手记