数据源
- 内存键盘:数据存放内存
- 文件:持久化存储
- 映射:将两个对象对应出来 (类似通过一个地址连接到另一个地址)
java中File是内存中的一个对象通过File这个对象映射硬盘上的文件或文件夹
File
输入输出导包:java.io.File
创建File类语法:
File file =new File(String pathname); //file对象不是真正的文件,它是在堆内存中创建的一个内存空间
物理地址 c:\test.txt或者c:/test.txt//硬盘上的文件名不区分大小写,内存中的File对象名字区分大小写
File既可以指文件也可以指目录
通过方法操作文件或目录的属性
相对路径:没有盘符(C盘用盘符表示为C:),当前工程(项目)所在的位置找寻跟着项目走(它是区分大小写的)
src\test02\FileDemo.java
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file=new File("src/test02/FileDemo.java");
绝对路径:从盘符(C盘用盘符表示为C:)开始一直到文件名为止,相当于类全名(它是不区分大小写的)
E:\java\java_kh83_1212\src\test02\FileDemo.java
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file=new File("E:\\java\\java_kh83_1212\\src\\test02\\FileDemo.java");
1个汉字字符是2个字节,1个英文字符是1个字节
流(Stream)
InputStream输入流
outStream输出流
流是一组有序的数据序列
基类:java中继承关系的父类 如 A extend B B为父类,而B就是基类
派生类:java中继承关系的子类 如 A extend B A为子类,而A就是派生类
流按流向区分
- 输出流:OutputStream和Writer作为基类
- 输入流:InputStream和Reader作为基类
按照处理数据单元划分
- 字节流
字节输入流InputStream(抽象类)基类
inputStream类常用方法:
int read() 一个字节一个字节的读,返回的是该字节的整数表示形式,如果到了输入流的末尾,返回-1
int read(byte[] b) 读取若干个字节,把字节保存到数组b中,返回的是读取的字节数,如果到了输入流的末尾,返回-1
int read(byte[] b,int off,int len) 读取若干个字节,把字节保存到数组b中,从数组的off下标位置开始读取,读取的字节数目用len表示。返回的是实际读取的字节数,如果到了输入流的末尾,返回-1
void close() 关闭流读取
int available(): 从输入流可以读取的字节数目
字节输出流OutputStream基类 - 字符流
字符输入流Reader基类
字符输出流Writer基类
字符流是8位通用字节流,字符流是16Unicode字符流