大纲
文件流
创建文件方式:
//方式一:
String filePath = "e:\\news1.txt";
File file = new File(filePath);
try{
file.creatNewFile();
}catch(IOException e){
e.printStackTrace();
}
//方式二:new File(File parent ,String child)
File parentFile = new File("e:\\");
String fileName = "a.txt";
File file = new File(parentFile,filename);
file.creatNewFile();
//方式三:new File(String parent ,String child)
//基本同上
获取文件信息:
length():文件长度(字节数)
目录:
java编程中,目录也被当作文件
IO流的原理以及分类
FileInputStream:
public void readFile(){
String file = "e:/hello.txt";
FileInputStream fileInputStream = null;
byte[] bt = new byte[8];
try {
int len;
fileInputStream = new FileInputStream(file);
while((len=fileInputStream.read(bt))!=-1){
System.out.print(new String(bt,0,len));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileOutputStream
File file = new File("e:/hello.txt");
try {
//关键字true表示新输出的文字将追加在文件末尾
FileOutputStream fileOutputStream = new FileOutputStream(file,true);
String name = "asufaf";
//getBytes()可以将字符串转换为字节数组
fileOutputStream.write(name.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
BufferedReader和BufferedWriter(处理字符文件)
bufferedReader和BufferedWriter内含Reader和Writer的属性,说明两者可以直接操作父类及其子类
File file = new File("e:/hello.txt");
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String line ;
while((line = bufferedReader.readLine())!= null){
System.out.println(line);
}
bufferedReader.close();
BufferedInputStreamh和BufferedOutputStream(处理二进制文件)
ObjectInputStream和ObjectOutputStream(对象流:属于处理流)
用于完成数据的序列化和反序列化
import java.io.*;
public class write {
public static void main(String[] args) throws Exception {
String filePath = "e:\\data.dat";
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
oos.writeInt(100);
oos.writeBoolean(true);
oos.writeChar('3');
oos.writeUTF("太对了哥");
oos.writeObject(new Dog("旺财",3));
}
}
class Dog implements Serializable{
String name;
int age;
Dog(String name , int age){
this.name= name;
this.age= age;
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
public class read {
public static void main(String[] args) throws IOException, ClassNotFoundException {
String file = "e:/data.dat";
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(file));
System.out.println(objectInputStream.readInt());
System.out.println(objectInputStream.readBoolean());
System.out.println(objectInputStream.readChar());
System.out.println(objectInputStream.readUTF());
Object dog = objectInputStream.readObject();
System.out.println(dog.getClass());
System.out.println(dog);
objectInputStream.close();
}
}
static和transient表示属性不会被序列化
序列化时,要求里面的属性的类型也实现序列化接口
序列化具备可继承性,如果某类实现了序列化,则默认其子类均实现序列化
转换流InputStreamReader和OutputStreamWriter