java IO 流-字节流-字符流-缓冲流 详细案例

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;


// 流 以 内存 为参照
// 字节流 : FileOuputStream FileInputStream
// 字符流 : FileWriter FileReader
// 缓冲流: BufferedWriter BufferedReader
public class IO {
public static void main(String[] args){
fileReader();
}

//字节流 输出流
public static void fileOutputStream(){
File f = new File("e:\\text.txt"); //指定到支持的文件

try{
//文件不存在时创建
if(f.exists()==false){
f.createNewFile();
}
FileOutputStream fos = new FileOutputStream(f);
String str = "今天的天气很闷沉";
byte[] b = str.getBytes();
fos.write(b);
fos.close();
}catch(Exception ex){
ex.printStackTrace();
}
}

//字符流 输出流
public static void fileWriter(){
File f = new File("e:\\text.txt");
try{

if(f.exists()==false){
f.createNewFile();
}
FileWriter fw = new FileWriter(f,true); //true 表示不覆盖文件里面的内容
String str = "今天的天气很闷沉";
char[] ch = str.toCharArray();
fw.write("\r\n"); //写入换行
fw.write(ch);
fw.close();
}catch(Exception ex){
ex.printStackTrace();
}
}

// 缓冲流 输出流
public static void bufferedWriter(){
File f = new File("e:\\text.txt");
try{

if(f.exists()==false){
f.createNewFile();
}
BufferedWriter bw = new BufferedWriter(new FileWriter(f,true)); // 以字符流的对象为参数

//缓冲流可以直接操作字符
bw.write("\r\n");
bw.write("天气不是很好!");

bw.close();
}catch(Exception ex){
ex.printStackTrace();
}
}

//字节流 输入流
public static void fileInputStream(){
File f = new File("e:\\text.txt");
try{

if(f.exists()==false){
f.createNewFile();
}
FileInputStream fis = new FileInputStream(f);

// 字节数组的长度 ,由文件的字节大小
byte[] b = new byte[(int)f.length()];
fis.read(b); //读入数据

String str = new String(b); //以字节数组构建字符串

fis.close();
System.out.println(str);
}catch(Exception ex){
ex.printStackTrace();
}
}

//字符流 输入流
public static void fileReader(){
File f = new File("e:\\text.txt");
try{
if(!f.exists()){
f.createNewFile();
}

FileReader fr = new FileReader(f);

StringBuffer sb = new StringBuffer();
char[] ch = new char[1000]; // 字符的长度未知
int hasRead = 0;
while((hasRead=fr.read(ch))>0){
sb.append(new String(ch,0,hasRead));
}

fr.close();
System.out.println(sb);
}catch(Exception ex){
ex.printStackTrace();
}
}

//缓冲刘 输入流
public static void bufferedReader(){
File f = new File("e:\\text.txt");
try{
if(!f.exists()){
f.createNewFile();
}
BufferedReader br = new BufferedReader(new FileReader(f)); //字符流的对象构造

//每次读取文件的一行
StringBuffer sb = new StringBuffer();
while(br.ready()){ //是否有读取内容
sb.append(br.readLine()); //读取一行
sb.append("\r\n"); //换行
}
br.close();
System.out.println(sb);

}catch(Exception ex){
ex.printStackTrace();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值