目录
更多示例代码请看我的其他博客或GitHub。不定期更新,学习过程中用到就写到哪里,作为模板供以后使用和复习。
文件整体读写
需要注意的是,FileOutputStream第二个参数是true,write就会在文件的末尾开始写入(如果文件原本存在的话)是false的话就会替换原文件,如果文件不存在java会自动创建文件。
public void fileIO() throws IOException
{
FileInputStream input=new FileInputStream("C:\\Users\\雨\\Desktop\\input.txt");
FileOutputStream output=new FileOutputStream("C:\\Users\\雨\\Desktop\\output.txt",true);
input.transferTo(output);
input.close();
output.close();
}
对象序列化与反序列化
注意:
ObjectOutputStream(OutputStream out)
初始化时会向输出流中写入序列化流头信息(serialization stream header),ObjectInputStream(In
putStream in)
初始化时会从输入流中读取这个头信息,如果读不到就会报错。
枚举类型不能当做对象读写。
import java.io.Serializable;
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public void objectIO() throws IOException, ClassNotFoundException
{
User user=new User();
user.setName("objectOutputTest");
FileOutputStream output=new FileOutputStream("C:\\Users\\雨\\Desktop\\objectOutput.txt",true);
ObjectOutputStream objectOutput=new ObjectOutputStream(output);
objectOutput.writeObject(user);
FileInputStream input=new FileInputStream("C:\\Users\\雨\\Desktop\\objectOutput.txt");
ObjectInputStream objectInput=new ObjectInputStream(input);
User u2=(User) objectInput.readObject();
System.out.println(u2.getName());
objectOutput.close();
objectInput.close();
}
文本文件字符读写
public void stringFileIO() throws IOException
{
FileReader fileReader=new FileReader("C:\\Users\\雨\\Desktop\\input.txt");
char[] cbuf=new char[5];
while(fileReader.read(cbuf)!=-1)
{
for(char c:cbuf)
System.out.print(c);
}
fileReader.close();
fileReader=new FileReader("C:\\Users\\雨\\Desktop\\input.txt");
FileWriter fileWriter=new FileWriter("C:\\Users\\雨\\Desktop\\output.txt",true);
fileReader.transferTo(fileWriter);
fileWriter.close();
fileReader.close();
}
数据流
数据流可以以与平台无关的方式从底层字节流读写java基本类型和字符串,可以用在socket通信中。读取基本数据类型时,要求输入流读取的数据是DataOutput
的子类对象所写的。
public void dadaStream() throws IOException
{
FileOutputStream fos=new FileOutputStream("C:\\Users\\雨\\Desktop\\output.txt",true);
DataOutputStream dos=new DataOutputStream(fos);
dos.writeInt(51);
dos.writeBoolean(true);
dos.writeUTF("为中华之崛起而读书 @zel");
FileInputStream fis=new FileInputStream("C:\\Users\\雨\\Desktop\\output.txt");
DataInputStream dis=new DataInputStream(fis);
System.out.println(dis.readInt());
System.out.println(dis.readBoolean());
System.out.println(dis.readUTF());
dos.close();
dis.close();
}