字符流:char
Reader->InputStreamReader(字节流InputStream,编码)->FileReader(路径 | | FIle对象)
乱码问题:reader = new InputStreamReader(new FileInputStream("路径"),"GBK");
import java.io.*;public class InputReaderTest {public static void main(stringl] args){//Reader->InputStreamReader->FileReaderReader reader = null;//字符流try {reader= new InputstreamReader(new FileInputstream("D:\\4072\\1\\1.txt"),"GBK");char c[]= new char[100];reader .read(c)://将数组转换为字符串String msg = new string(c):System.out.println(msg);}catch(Exception e){e.printstackTrace(;}finally {try {reader.close();}catch(IoException e){e.printstackTrace();}}}
}
缓冲区: BufferedReader(字符流Reader)
import java.io.*;public class BufferedReaderTest {public static void main(string[] args){//Reader->InputStreamReader->FileReaderReader reader = null;//字符流BufferedReader br = null;try {reader = new FileReader("D:l4072\\1\\1.txt");br = new BufferedReader(reader):String msg = nu1l;while((msg =br.readLine()!=nu11){System.out.printin(msg);}catch(Exception e){e.printstackTrace();}finally {try {br.close;reader.close();}catch(IoExceptione){e.printstackTrace();}}}
}
输出流 (写入)
Writer->OutputStreamWriter(字节流OutputStream,编码)->FileWriter(路径 || File对象,是否追加)
write(字符串) 写入方法
close() 释放资源
flush() 刷新缓冲区
import java.io.Filewriter ;
import java.io.IOException;
import java.io.Writer :public class Outputwriter {public static void main(string[] args){//writer->0utputstreamwriter(字节流0utputstream,编码)->Filewriter(路径|File对象,是否追加)Writer writer = null;try {writer = new Filewriter("D:l14072\\1\\1.txt",true);//写入writer.write("\n123");System.out.printn("写入成功!!!!");}catch(Exception e){e.printstackTrace0;}finally {try {writer.closeO://释放资源}catch(IoExceptione){e.printstackTrace();}}}
}
缓冲区:BufferedWriter(Writer字符流)
import java.io.Bufferedwriter;
import java.io.Filewriter;
import java.io.IOException;
import java.io.writer;public class BufferedwriterTest {public static void main(string[] args){//writer->Outputstreamwriter(字节流Outputstream,编码)->Filewriter(路径||Fi1e对象,是否追加)Writer writer = null;Bufferedwriter bw =null;try {writer = new Filewriter("D:l4072\1\1.txt",true);//创建缓冲区bw = new Bufferedwriter(writer);//写入信息到缓冲区bw.write("数据结构");bw.newLine();//换行bw.write("软件名词解释");bw.newLine();//换行bw.write("Linux虚拟机安装vmware");//将缓冲区数据刷新到字符流中bw.flush();System.out.printin("写入成功!!!!");}catch(Exception e){e.printstackTrace();}finally {try {bw.close();writer.close();//释放资源}catch(IoException e){e.printstackTrace();}}}
}
二进制读写
读取:InputStream->FileInputStream->DataInputStream(InputStream)
写入: OutputStream->FileOutputStream->DataInputStream(OutputStream)
import java.io.*;public class DatastreamTest{public static void main(string[] args){//InputStream->FileInputStream->DataInputStream(Inputstream)//0utputStream->File0utputStream->Data0utputStream(OutputStream)DataInputstream dis =null;DataOutputStream dos =nu:try {dis = new DataInputstream(new FileInputstream("D:istar.jpg"));dos = new DataOutputStream(new Fileoutputstream("D:\\4072\\1.jpg")”int b = -1;while((b=dis.read())!=-1){dos.write(b);System.out.printin("复制成功!!!"):}catch(Exception e){e.printstackTrace0;} finally {try {dos.close0;dis.close();}catch(IoExceptione){throw new RuntimeException(e);}}}
}
序列化(ObjectOutputStream)与反序列化(ObjectInputStream)
序列化:将内存对象存储到硬盘
OutputStream->ObjectOutputStream(OutputStream)
OutputStream->FileOutputStream
反序列化:将硬盘中存储的对象转换为内存对象
InputStream->ObjectInputStream(InputStream)
InputStream->FileInputStream
import java.io.*;public class objectTest {public static void main(string[] args){//outputstream->objectoutputstream(outputstream)//outputStream->File0utputstreamObjectoutputStream oos =nu1l;//Inputstream->objectInputstream(Inputstream)//Inputstream->FileInputstreamObjectInputstream ois = nu1l;try {//序列化oos = new objectoutputstream(new Fileoutputstream("D:14072\\1\\1.txt"));Student student = new student("张三",17);oos.writeobject(student);//写入对象System.out.printin("写入成功!!!");//反序列化ois = new objectInputstream(new FileInputstream("D:\\4072\\1\\1.txt"));Student stu=(student)ois.readobject();System.out.printin(stu.tostring());}catch(Exception e){throw new RuntimeException(e);} finally {try {oos.closeO;//释放资源}catch(IoException e){throw new RuntimeException(e)}}}
}