./上一级
D:\\XXXX\\XXXX\\XX 或者:D:/XXX/XXX/XXX/XXX/XXXX
File file=new File("D:\\XXXX\\XXXX\\XX");
XXXX.mkdir();//创建目录
File file=new File("D:\\XXXX\\XXXX\\XX");
try{
if(!file.extsts())//如果文件不存在,则创建
//如果文件存在,则不会创建新文件
file.createNewFile();//创建一个新文件
}
InputStream:字节输入流(抽象类)
int read();
从输入流一个字节一个字节的读,返回的是该字节的整数表示形式
int read(byte[] b):
从输入流读取若干字节,把这些字节保存到数组b中,返回的是读取到的字节数,如果到了输入流的末尾,返回-1;
int read(byte[] b,int off,int len):
从输入流读取若干字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数目。返回的是读取到的字节数,如果到了输入流的末尾,返回-1;
一.字节流
字节输入流(读)
InputStream
read()
read(byte[])
read(byte[],off,len)
close()
FileInputStream
new FileInputStream(File file)
new FileInputStream(String path)
字节输出流(写)
OutputStream
writr(int)
writr(byte[])
writr(byte[],off,len)
close()
flush() 强制将缓冲区清空
FileOutputStream
new FileOutputStream(File file)
new FileOutputStream(String path)
new FileOutputStream(String path,boolean append):可以指定覆盖或追加文件内容
二 字符流
字符输入流(读)
Reader(父)
read()
read(byte[])
read(byte[],off,len)
close()
InputStreamReader(子):可以指定字符编码格式
new InputStreamReader(InputStream)
new InputStreamReader(InputStream,String charSetName)
FileReader(孙)
new FileReader(File file)
new FileReader(String path)
字符输出流(写)
Writer
Write(int ch)
Write(byte[])
close()
fiush():清空缓存
OutputStreamWriter(子):可以指定字符编码格式
new OutputStreamWriter(OutputStream)
new OutputStreamWriter(OutputStream,String charSetName)
FileWriter(孙):以下两种构造,都可以重载,指定一个boolean类型的参数,用来指定追加还是覆盖文件
new FileWriter(File file)
new FileWriter(String path)
BufferedWriter:带缓冲区的输出流
flush() 强制将缓冲区清空
GBK GB2312
UTF-8
newLine();//换行输出
中文乱码
原因:文件编码格式 和程序环境的编码格式不一致
解决方案:
字符流去读的时候,指定字符流的编码格式
FileReader 无法指定编码格式,会按照文件系统默认编码格式读
System.out.println(System.getProperty("file.encoding"));
缓冲流BufferedReader
readLine()
读写二进制文件
DataInputStream类输入流
FileInputStream的子类
与FileInputStream类结合使用读取二进制文件
DataOutputStream类输出流
FileOutputStream的子类
与FileOutputStream类结合使用读取二进制文件
序列化和反序列化
序列化:将对象的状态写入到特定的流中的过程
反序列化:从特定的流中获取数据重新构建对象的过程
ObjectInputStream类输入流 反序列化 readObject()--》类型转换
ObjectOutputStream类输出流 序列化 writeObject(Object)
不想被序列化的属性前面加 transient 可以屏蔽这个属性
常见异常:
NotSerializableException:类没有实现Serializable接口无法实现序列化 只是一种能力并没有重写里面的方法