一、IO流简介
Java IO操作主要指的是使用Java进行输入、输出操作,Java中的所有操作类都存放在java.io包中,在使用时需要导入此包。
在整个java.io包中最重要的就是5个类和一个接口。
五个类指的是File、OutputStream、InputStream、Writer、Reader;
一个接口指的是Serializable。
掌握了这些,IO流的核心就掌握了。
下面我们来看看代码示例
二、IO流代码示例
/**
* 缓冲字节输入流读取文件
*/
@Test
public void ioTest() throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\javaio\\demo.txt"));
byte[] b = new byte[1024];
int len = 0;
while ((len = bis.read(b)) != -1)
{
System.out.println(new String(b, 0, len));
}
bis.close();
}
/**
* 缓冲字节流(字节拷贝)
*
* @throws IOException
*/
@Test
public void ioTest1() throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\javaio\\demo.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\javaio\\demo1.txt"));
byte[] b = new byte[1024];
int len = 0;
while ((len = bis.read(b)) != -1)
{
bos.write(b, 0, len);
}
bos.close();
bis.close();
}
/**
* 缓冲字符流读取文件内容
*
* @throws IOException
*/
public void ioTest3() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("D:\\javaio\\demo.txt"));
String str;
while ((str = br.readLine()) != null)
{
System.out.println(str);
}
br.close();
}
/**
* 缓冲字符流(文件拷贝)
*
* @throws IOException
*/
public void ioTest4() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("D:\\javaio\\demo.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\javaio\\demo2.txt"));
String str;
while ((str = br.readLine()) != null)
{
bw.write(str);
bw.newLine();
}
bw.close();
br.close();
}
/**
* 转换流读取文件
*/
@Test
public void ioTest5() throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\javaio\\demo.txt"), "GBK");
char[] cbuf = new char[1024];
int len;
while ((len = isr.read(cbuf)) != -1)
{
System.out.println(new String(cbuf, 0, len));
}
isr.close();
}
/**
* 转换流copy
* @throws IOException
*/
@Test
public void ioTest6() throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\javaio\\demo.txt"));
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\javaio\\demo5.txt"));
char[] c = new char[1024];
int len;
while((len = isr.read(c)) != -1){
osw.write(c, 0, len);
}
osw.close();
isr.close();
}
/**
* 对象序列化
*/
@Test
public void ioTest7 () throws IOException {
ObjectOutputStream oop=new ObjectOutputStream(new FileOutputStream("D:\\javaio\\xuliehua.txt"));
oop.writeObject(new Student(1,"gk",24));
oop.close();
}
/**
* 对象反序列化
* @throws Exception
*/
@Test
public void ioTest8() throws Exception{
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:\\javaio\\xuliehua.txt"));
Student s=(Student) ois.readObject();
System.out.println(s);
ois.close();
}
三、总结
IO流
|--字节流
|--字节输入流
InputStream
int read():一次读取一个字节
int read(byte[] bys):一次读取一个字节数组
|--FileInputStream
|--BufferedInputStream
|--字节输出流
OutputStream
void write(int by):一次写一个字节
void write(byte[] bys,int index,int len):一次写一个字节数组的一部分
|--FileOutputStream
|--BufferedOutputStream
|--字符流
|--字符输入流
Reader
int read():一次读取一个字符
int read(char[] chs):一次读取一个字符数组
|--InputStreamReader
|--FileReader
|--BufferedReader
String readLine():一次读取一个字符串
|--字符输出流
Writer
void write(int ch):一次写一个字符
void write(char[] chs,int index,int len):一次写一个字符数组的一部分
|--OutputStreamWriter
|--FileWriter
|--BufferedWriter
void newLine():写一个换行符
void write(String line):一次写一个字符串