/** * * @author ASUS * 实现字节流与字符流操作转换 * *
字符虽然需要进行缓冲区进行处理,但是有一个问题千万不能忽略,字符输出流有一个特点: *
可以直接输出字符串数据,所以有些时候就不得不进行字节流与字符流的操作转换。 * 在java。io里面提供有两个类 *
InputStreamReader OutStreamWriter 定义 构造方法 * *InputStreamReader:
public class InputStreamReader extends Reader * public
InputStreamReader(InputStream in) * *OutStreamWriter:public class
OutputStreamWriter extends Writer * public
OutputStreamWriter(OutputStream out) *
*因为此处没有OutputStream类的对象,所以此处自己造的OutputStream,但是这种转换的已有不打,只有一种情况下 *有可能会用到这种的转换:方便处理中文数据 * *请观察类的继承结构: * FileIntputStream类的继承结构 *
java.lang.Object
java.io.InputStream
java.io.FileInputStream * *
FileOutputStream类的继承结构 *
java.lang.Object
java.io.OutputStream
java.io.FileOutputStream
- FileInputStream 与FileOutputStream都是InputStream与OutputStream直接子类, *
FileReader继承结构
java.lang.Object
java.io.Reader
java.io.InputStreamReader
java.io.FileReader *FileWriter继承结构
java.lang.Object
java.io.Writer
java.io.OutputStreamWriter
java.io.FileWriter* 文件保存在磁盘上,磁盘上能够保存多的文件形式都是以字节的方式保存,而在使用字符流读取的时候实际上也是 * 针对于字节数据进行读取,只不过这个转换过程被操作系统给隐藏了,在缓冲区里面进行了数据的操作 * */
package wenjiancaozuo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class zhuanhuanlei {
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
File file1 = new File("E:"+File.separator+"demo"+File.separator+"my.txt");
if(!file1.getParentFile().exists())
{
file1.getParentFile().mkdirs();
}
OutputStream outputStream = new FileOutputStream(file1); /// 字节流
/// 将OutputStream对象传递给OutputStreamWriter类的构造方法,而后向上转型为Writer
Writer outWriter = new OutputStreamWriter(outputStream);
outWriter.write("Hello world!"); /// writer方法
outputStream.close();
}
}