IO: 理解流的概念
(1)Java的流分为两大类:节点流类和字符流;
(2)InputStream与OutputStream类;
1、输入流:程序可以从中读取字节的对象叫输入流,在Java中,用InputStream类来描述所有输入流的抽象概念;
2、输出流:程序可以像其中连续写入字节的对象叫输出流,在Java中,用OutputStream类来描述所有输出流的抽象概念;
(3)FileInputStream与FileOutputStream类;
1、用来创建磁盘文件的输入流和输出流对象,通过对他们的构造函数指定文件路径和文件名。
2、创建FileInputStream实例对象时,指定的文件应当是存在和可读的。创建FileOutputStream实例对象时,如果指定的文件已经存在,这个文件的原来内容将被覆盖清除;
1、创建FileOutputStream实例对象时,可以指定还不存在的文件名,不能指定一个已被其他程序打开了的文件。
2、对于同一个磁盘文件创建FileOutputStream对象的两种方式:
3、FileInputStream inOne = new FileInputStream("heima.txt");
4、File f = new File("heike.txt");
FileInputStream inTwo = new FileInputstream(f);
例子:
package com.heima.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class IOTest {
public static void main(String[] args) {
FileOutputStream out = null;
FileInputStream in = null;
try {
out = new FileOutputStream("heima.txt");
out.write("heima".getBytes());
File f = new File("E:" + File.separator + "heike.txt");
byte [] buf = new byte[(int)f.length()];
in = new FileInputStream(f);
int len = in.read(buf);
System.out.println(new String(buf,0,len - 1));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileWriter fw = null;
try {
fw = new FileWriter("hello2.txt");
fw.write("www.it315.org");//直接写入字符串
out.close();//执行此语句写入的字符串才能实现刷新
char [] buf = new char[1024];
FileReader fr = new FileReader("hello2.txt");//读取文件
int len = fr.read(buf);
System.out.println(new String(buf,0,len));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
字符流的缓冲区:
对应类:BufferedWriter、BufferedReader 需结合流才能使用。
它的出现是为了提高流的操作效率,所以在创建缓冲区前必须要先有流对象。
注:只要用到缓冲区就要记得刷新。bufferWriter.flush();
package com.heima.io;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedTest {
public static void main(String[] args)
{
BufferedWriter bw = null;
FileWriter fw = null;
try {
fw = new FileWriter("BufferedWriterTxt.txt");
bw = new BufferedWriter(fw);
bw.write("I like java");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try
{
if(bw != null) {
bw.close();
}
if(fw != null) {
fw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}