------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----------
1、字节流读取的时候,读到一个字节就返回一个字节。字符流使用了字节流读到一个或多个字节(中文对应的字节为两个,UTF-8码表中是三个)时,先去查指定的编码表,将查到的字符返回。
2、字节流可以处理所有类型数据,如图片、MP3等。字符流只能处理字符数据。
3、字节流输入流都是以InputStream结尾,字节流输出流都是以OutputStream结尾,在InputStream或者OutputStream前面代表这个流的作用。字符流输入流都是以Writer结尾,字符流输出流都是以Reader结尾,相同与字节流前面也是代表这个流的作用。
如果处理的是纯文本数据,优先使用字符流,除此之外都考虑使用字节流。
//字符流练习,自定义缓冲类
import java.io.*;
class MyBufferedReaderDemo
{
//主函数
public static void main(String[] args) throws IOException
{
//创建缓冲区
MyBufferedReader mybf = new MyBufferedReader(new FileReader("CopyTest2.java"));
String line = null;
//循环读取数据,并打印在控制台上
while((line = mybf.MyReadLine()) != null)
{
System.out.println(line);
}
mybf.MyClose();//关闭读取流资源
}
}
//自定义缓冲类
class MyBufferedReader
{
private FileReader r;
MyBufferedReader(FileReader r)
{
this.r = r;
}
public String MyReadLine() throws IOException
{
StringBuilder sb = new StringBuilder();
int ch = 0;
//读取数据
while((ch = r.read()) != -1)
{
//设置结束标记
if(ch == '\r')
continue;
if(ch == '\n')
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length() != 0)
sb.toString();
return null;
}
//关闭资源
public void MyClose() throws IOException
{
r.close();
}
}
//字节流练习,自定义输出流缓冲类
import java.io.*;
//自定义输出流缓冲类
class MyBufferedInputStream
{
private InputStream in;
private byte[] buf = new byte[1024];
private int pos = 0,count = 0;
//创建带参数构造函数
MyBufferedInputStream(InputStream in)
{
this.in = in;
}
public int myRead() throws IOException
{
//通过in对象对去硬盘数据
if(count == 0)
{
count = in.read(buf);
//设置输出流结束标记
if(count < 0)
return -1;
pos = 0;
byte b = buf[pos];
count--;
pos++;
return b&255;
}
else if(count > 0)
{
byte b = buf[pos];
count--;
pos++;
return b&255;
}
return -1;
}
public void myClose() throws IOException
{
in.close(); //关闭流资源
}
}
class MyInputStreamDemo
{
//主函数
public static void main(String[] args) throws IOException
{
long start = System.currentTimeMillis();
copy_1();
long end = System.currentTimeMillis();
}
//读取指定文件数据,并将数据保存
public static void copy_1() throws IOException
{
MyBufferedInputStream bufis = new MyBufferedInputStream(new FileInputStream("YPOK 01.mp3"));
BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("YPOK 02.mp3"));
int by = 0;
//循环读取数据并将数据保存
while((by = bufis.myRead()) != -1)
{
bufos.write(by);
}
bufos.close();//关闭输出流资源
bufis.myClose();//关闭读取流资源
}
}
----------android培训、java培训、java学习型技术博客、期待与您交流!------------