字节流 InputStream OutputStream
字符流 Reader Writer
他们都是抽象类
具体实现
字节流 FileInputStream FileOutputStream
字符流 FileReader FileWriter
字节流转换成字符流可以用 InputSteamReader OutputStreamWriter转换成BufferdReader BufferedWriter
他们具有缓冲区
例如:读取文件 从字节流输入到字符流输入
定义一个字节流:
可以把读出来的内容赋值给字符
例如:写入文件 从字节流输出到字符流输出
字符流 Reader
他们都是抽象类
具体实现
字节流 FileInputStream
字符流 FileReader
字节流转换成字符流可以用 InputSteamReader
例如:读取文件 从字节流输入到字符流输入
定义一个字节流:
Java代码
-
FileInputStream
fileInputStream = new FileInputStream("d:/text.txt"); // 定义一个指向D:/TEXT.TXT 的字节流 -
InputStreamReader
inputStreamReader = new InputStreamReader(fileInputStream); -
//字节流转换成InputStreamReader
-
BufferedReader
bufferedReader = new BufferedReader(inputSteamReader); -
//InputStreamReader
转换成带缓存的bufferedReader
可以把读出来的内容赋值给字符
Java代码
-
String
ss = new String(); -
String
s; -
while((s
= bufferedReader.readLine())!=null){ -
ss += s; -
}
例如:写入文件
Java代码
-
FileOutputStream
fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个指向D:/TEXT.TXT文件 -
OutputStreamWriter
outputStreamWriter = new OutputStreamWriter(fileOutputStream); -
BufferedWriter
bufferedWriter = new BufferedWriter(outputStreamWriter); - bufferedWriter.write(s);
-
bufferedWriter.close();
-
outputStreamWriter.close();
-
fileOutputStream.close();
-
import
java.io.*; -
public
class InputStreamFromReader extends InputStream { -
Reader reader; -
String encoding=null; -
-
byte[] buf=null; -
-
int bufSize=0; -
-
public InputStreamFromReader(Reader reader) -
{ -
this.reader=reader; -
} -
-
public InputStreamFromReader(Reader reader,String encoding) -
{ -
this.reader=reader; -
this.encoding=encoding; -
} -
@Override -
-
public int read() throws IOException { -
if(bufSize<1)//缓冲中无数据,填充缓冲数组 -
{ -
int ch=reader.read();//读取下一个字符 -
if(ch==-1) //结束 -
return -1; -
String temp=new String(new char[]{(char)ch});//构造字符串 -
//根据编码获取字节数组,放在字节缓冲中 -
if(this.encoding==null) -
this.buf=temp.getBytes(); -
else -
this.buf=temp.getBytes(this.encoding); -
this.bufSize=this.buf.length; -
} -
//从缓冲中返回 -
return buf[bufSize--]&0xff; -
} -
}