JAVA 基础重构 九 (IO流和文件操作)

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

读写文件

   一个流被定义为数据序列,输入流用于从源文件读取数据,输出流用于向目标文件写数据。

IO流分为字节流和字符流。字符流又分为Reader和Writer,字节流分为InPutStream 和OutPutStream。

字节流

FileInputStream

该流用于从文件读取数据,它的对象可以用关键字 new 来创建;有两种构造方法

//构造方法1
InputStream f=new FileInputStream("c:/java/hello");
//构造方法2
File f= new File("C:/java/hello");
InputStream out = new FileInputStream(f);

控制台输入

//BufferedReader 对象创建后,我们便可以使用 read() 方法从控制台读取一个字符,或者用 readLine() //方法读取一个字符串。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。 //该方法抛出 IOException
int read() throws IOException
//读取一个字符串需要使用 BufferedReader 的 readLine() 方法。

String readLine() throws IOException

 

FileOutputStream

该类用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两种构造方法:

//构造方法1
OutputStream f = new FileOutputStream("C:/java/hello")
//构造方法2
File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);

字符流

字符的处理,一次处理一个字符,字符的底层实现依旧是基本的字节序列。

字符流的基本实现 :

InPutStreamReader :完成byte流解析成 char 流,按照编码解析,

OutPutStreamWriter: 提供char 流 到 byte 流,按编码处理。

String file1="C:\\Users\\acer\\workspace\\encode\\new4\\test1";
  String file2="C:\\Users\\acer\\workspace\\encode\\new4\\test2";
  InputStreamReader isr=new InputStreamReader(new FileInputStream(file1));
  OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(file2));
//  int c;
//  while((c=isr.read())!=-1){
//   System.out.print((char)c);
//  }
  char[] buffer=new char[8*1024];
  int c;
  //批量读取,放入buffer这个字符数组,从第0个位置到数组长度
  //返回的是读到的字符个数
  while((c=isr.read(buffer,0,buffer.length))!=-1){
   String s=new String(buffer,0,c);//将char类型数组转化为String字符串
   System.out.println(s);
   osw.write(buffer,0,c);
   osw.flush();
   //osw.write(s);
   //osw.flush();
  }
  isr.close();
  osw.close();

注意 :

字符流操作的是文本文件,不能操作其他类型的文件!!

微信公众号

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值