字节流:针对二进制文件
字节流:针对二进制文件
InputStream
--FileInputStream
--BufferedInputStream
--ObjectInputStream
OutputStream
--FileOutputStream
--BufferedOutputStream
--ObjectOutputStream
字符流:针对文本文件。读写容易发生乱码现象,在读写时最好指定编码集为utf-8
Writer
--FileWriter
--BufferedWriter
--OutputStreamWriter
Reader
--FileReader
--BufferedReader
--IutputStreamWriter
--PrintWriter/PrintStream
File文件流
常用的方法
文件,文件夹属性
length()//文件的字节量
exists()//是否存在,存在返回true
isFild()//是否为文件,是文件返回true
isDirectory()//是否为文件夹,是文件夹返回true
getName()//获得文件/文件夹名
getParent()//获取父文件夹的路径
getAbsolutePath()//获取文件的完整路径
创建、删除
creatNewFile()//新建文件,文件夹不存在会异常,文件已存在返回false
mkdirs()//新建多层不存在的文件夹\a\b\c
mkdir()//新建单层不存在的文件加\a
delete()//删除文件,删除文件夹
文件夹列表
list()//返回String,包含文件名
listFiles()//返回file,包含文件对象
字节流读取
父类
--public abstract class InputStream
--void close() 关闭此输入流并释放与该流关联的所有系统资源
--abstract int read() 从输入流中读取数据的下一个字节
--int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组B中
--int read(byte[] b,int off,int len) 将输入流中最多len个数据字节读入Byte数组
子类
--public class FileInputStream extends InputStream
--FileInputStream(File file)
--FileInputStream(String pathname)
子类
--public class BufferedInputStream
--BufferedInputStream(InputStream in)
--BufferedInputStream
测试文件的读取
private static void method(){
//1、创建字节流的读取对象
//InputStream in = new InputStream();//InputStream是抽象类 无法创建对象
InputStream in = new FileInputStream(new File);
InputStream in2 = new FileInputStream("");
//2、开始读取,如果读取到数据的末尾,返回-1
in2.read();//一个字节一个字节开始读取
//需求:重复读取每个字节
int b;
while((b=in2.read()) != -1){
system.out.println(b);
}
//3、释放资源
in.close();
in2.close();
}
private static void method(){
//BufferedInputStream是高效的字节流,原因在于底层维护了一个byte[]
//1、高效的字节流的读取对象
//InputStream in = new InputStream();//InputStream是抽象类 无法创建对象
InputStream in =new BufferedInputStream (new FileInputStream(new File(?)));
InputStream in2 =new BufferedInputStream( new FileInputStream("?"));
//2、开始读取,如果读取到数据的末尾,返回-1
in2.read();//一个字节一个字节开始读取
//需求:重复读取每个字节
int b;
while((b=in2.read()) != -1){
system.out.println(b);
}
//3、释放资源
in.close();
in2.close();
}