——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
IO
字符流的抽象基类
Reader,Writer
字节流的抽象基类
InputStrea,OutputStream
创建和关闭流实例
/*
Windows中,换行是 \r\n。
Linux 是\n。
*/
import java.io.Writer;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String... args) {
Writer w = null;
try {
// 为true表示不覆盖已有文件,并且续写
w = new FileWriter("1.Java", true);
w.write("_______");
fw.write("\r\n换行");
}
catch (IOException e) {
System.out.println(e);
}
finally {
if (w != null) {//避免流没有创建成功的情况下关闭
try {
w.close();//关闭流 释放资源
}
catch (IOException e) {
System.out.println(e);
}
}
}
}
}
IO流拷贝文件
/*
1、在C盘创建一个文件,用于存储C盘文件中的数据
2、定义读取流和C盘文件关联
3、通过不断的读写完成数据存储
4、关闭资源
*/
import java.io.IOException;
import java.io.Writer;
import java.io.Reader;
import java.io.FileWriter;
import java.io.FileReader;
public class Test {
public static void main(String... args) {
Reader r = null;
Writer w = null;
try {
r = new FileReader("C:\\1.Java");
w = new FileWriter("C:\\2.Java");
char[] buf = new char[1024];
for (int len = 0; (len = r.read(buf)) != -1;) {
w.write(new String(buf, 0, len));
}
}
catch (IOException e) {
System.out.println(e);
}
finally {
try {
if (r != null)
r.close();
} catch (IOException e) {
System.out.println(e);
}
finally {
try {
if (w != null)
w.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
}
}
字符流的缓冲区
1、缓冲区的出现提高了对数据的读写效率。
2、对应类。
(1)、BufferedWriter
(2)、BufferedReader
3、缓冲区要结合流才可以使用。
4、在流的基础上对流的功能进行了增强。
import java.io.IOException;
import java.io.Writer;
import java.io.FileWriter;
import java.io.BufferedWriter;
public class Test {
public static void main(String... args) throws IOException {
Writer w = new FileWriter("C:\\1.Java");
/*
*
* 为了提高字符写入流的效率,加入了缓冲技术,只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可
*/
BufferedWriter bw = new BufferedWriter(w);
bw.write("黑马程序员");
/*
*
* 当然如果要刷新的话,当然是要刷新缓存区的flush,
*
* 因为数据写到缓冲区里面去了。
*
* 如果刷新流对象是刷不出来东西的。关闭也一样
*/
bw.newLine();
bw.write("我来了");
bw.flush();
// bw.close();
/*
* 其实这个流可以不用关闭也行。因为缓存区必须有流,而流对象关闭了。
*
*
* 缓存区对象也就自动释放了
*/
w.close();
}
}
IO流(读取键盘录入)
System.out:对应的是标准输出设备:控制台
System.in:对应的是标准输入设备 :键盘
练习 把一个文件的数据打印在控制而台上
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.FileInputStream;
public class Test {
public static void main(String... args) throws IOException {
BufferedReader bufr = new BufferedReader(new InputStreamReader
(new FileInputStream("C:\\1.Java")));
BufferedWriter bufw = new BufferedWriter
(new OutputStreamWriter(System.out));
for (String line = null; (line = bufr.readLine()) != null;) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}