---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
IO流从操作数据的方式分为:字符流与字节流
字符流的缓冲区
1、缓冲区的出现提高了对数据的续写效率
2、对应的类:BufferedWriter,BufferedReader
3、缓冲区要结合流才可以使用
4、在流的基础上对流的功能进行了增强
注意:在创建缓冲区之前,必须要先有流对象
BufferedWriter
class zifuliuDemo
{
public static void main(String[] args) throws IOException
{
FileWriter fw=new FileWriter("buf.txt");//创建一个字符写入流对象
BufferedWriter bufw=new BufferedWriter(fw);//为了提高字符写入流效率,加入缓冲技术
//将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可
bufw.write("abcde");
bufw.newLine();//换行
bufw.flush();//只要用到缓冲区,就要记得刷新
bufw.close();
}
}
class copyDemo
{
public static void copy_2
{
FileWriter fw=null;
FileReader fr=null;
try
{
fw=new FileWriter("Democopy.txt");
fr=new FileReader("Demo.java");
char[] buf=new char[1024];
int len=0;
while((len=fr.read(buf)!=-1)
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
if(fr!=null)
try
{
fr.close()
}
catch (IOException e)
{
throw new RuntimeException("读写关闭失败");
}
}
}
}
BufferedReader
class bufReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("buf.txt");//创建一个读取流对象和文件相关联
BufferedReader bufr=new BufferedReader(fr);//为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数
String s=bufr.readLine();
sop("s="+s);
bufr.close();
//循环读取数据
String line=null;
while((line=bufr.readLine())!=null);
{
sop(line);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
}
字节流
InputStream 读
OutputStream 写
class
{
public static void main(String[] args)
{
FileOutputStream fos=null;
FileInputStream fis=null;
try
{
fos=new FileOutputStream("c:\\1.bmp");
fis=new FileInputStream("c:\\2.bmp");
byte[] buf=new byte[1024];
int len=0;
while((len=fis.read())!=-1)
{
fos.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("复制文件失败");
}
finally
{
try
{
if(fis!=null)
fis.close();
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
try
{
if(fos!=null)
fos.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
}
流操作的基本规律
1、明确源和目的地
源:输入流InputStream,Reader
目的地:OutputStream,Writer
2、操作的数据是否是纯文本
是:字符流
不是:字节流
3、当体系明确后,再明确使用的具体对象,通过设备来进行区分
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
注意:通常涉及字符编码转换时,需要字符和字节之间的桥梁,用到转换流
---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------