您的位置:首页 > 编程语言 > Java开发

JAVA IO(三)

2016-04-17 16:17 405 查看
java中IO分类

按照数据流向分:输入流—————-输出流

按照数据单位:字节流——————字符流

按照是否直接和数据源相连:节点流———处理流

一,字节流转换成字符流(转换流)

用InputStreamReader 输入字节流转换成输入字符流

FileInputStream fis = new FileInputStream("aaa.txt");
Reader reader=new BufferedReader(fis);


用OutputStreamWriter输出字节流转换成输出字符流

FileOutputStream fos=new FileOutputStream("bbb.txt");
Writer writer=new OutputStreamWriter(fos);


public class TestChangStream {
//输入  字节流--->字符流
public Reader inputStreamToReader(InputStream is){
Reader reader = null;
reader  = new InputStreamReader(is);
return reader;
}
//输出 字节流--->字符流
public Writer outputStreamToWriter(OutputStream os){
Writer writer = null;
writer  = new OutputStreamWriter(os);
return writer;
}
}


2.按行读写

按字节(取一滴) —– 按字符(取一勺) —– 按行(取一桶)

(1). 以行为单位读写,比较方便

(2). 相当于缓冲区 缓冲区每次取一行

读一行:

使用的是 BufferedReader的readLine()方法

写一行:

使用的是 PrintWriter的println()方法

按行写也可以用BufferedWriter的write()方法换一行是newLine();

public class TestBufferWritter {
public static void main(String[] args) {
// FileInputStream fis=null;
FileReader fr = null;
BufferedReader br = null;
FileWriter fw = null;
BufferedWriter bw = null;
// PrintWriter pw = null;
try {
fr = new FileReader("F:\\Bluemix\\chapter13\\20160416.txt");
br = new BufferedReader(fr);
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
e.printStackTrace();
}
// 写
try {
fw = new FileWriter("F:\\Bluemix\\chapter13\\222222222.txt");
// pw = new PrintWriter(fw);
bw = new BufferedWriter(fw);
String str = null;
while ((str = br.readLine()) != null) {
/*if (br.ready()) {
pw.print(str);
} else {
pw.println(str);
}*/
bw.write(str);
bw.newLine();

}
System.out.println("写入成功!");
} catch (IOException e) {
System.out.println("写入失败");
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
System.out.println("br关闭失败");
e.printStackTrace();
}
}
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
System.out.println("fr关闭失败");
e.printStackTrace();
}
}
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
System.out.println("bw关闭失败");
e.printStackTrace();
}
}
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
System.out.println("fw关闭失败");
e.printStackTrace();
}
}
}

}

}


三,缓冲流

功能:减少和硬盘打交道次数 提高读写效率

字节流、字符流频繁和硬盘打交道 速度比较慢 效率低,可以使用缓冲提高效率。

带缓冲的流:

1.BufferedReader

2.BufferedWriter

3.PrintWriter

重点:缓冲区的内容写入到文件的三种情况:

1.调用BufferedWriter的flush()方法

2.缓冲流关闭 close();调用close()方式是系统缓冲的数据写到磁盘中

3.缓冲区满 ,默认缓冲区大小为16384个字节

实质char[] charArr = new char[8192];

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: