一:字节字符转换流(OutputStreamWriter和InputStreamReader):
OutputStreamWriter是Writer的子类,将输出的字符流转换成字节流,也就是讲一个字符流的输出对象变成字节流的输出对象。构造方法中传递一个OutputStream类的实例化对象。
InputStreamReader是Reader的子类,将输入的字节流变成字符流,也就是将一个字节流的输入对象变成字符流的输入对象。构造方法中传递一个InputStream类的实例化对象。
File f=new File("E:"+File.separator+"test.txt");
Writer out=null; //定义一个字符的输出流
out=new OutputStreamWriter(new FileOutputStream(f));
out.write("Hello World!!!");
out.close();
File f=new File("E:"+File.separator+"test.txt");
Reader reader=null;
reader=new InputStreamReader(new FileInputStream(f));
char[] c=new char[1024];
int temp=0;
int len=0;
while((temp=reader.read())!=-1){ //运用了ASCII码
c[len]=(char)temp;
len++;
}
reader.close();
二:内存操作流(ByteArrayInputStream和ByteArrayOutputStream):
ByteArrayInputStream是将数据写入到内存中,ByteArrayOutputStream是将数据从内存中读取出来。
ByteArrayInputStream是InputStream的子类,将byte数组作为参数传递给它的构造方法的时候就是将数据输出到了内存中。
ByteArrayOutputStream就是从内存中(ByteArrayInputStream)读取数据,然后调用write方法将数据写入到ByteArrayOutputStream中方便读取。
也就是说ByteArrayInputStream和ByteOutputStream是存在于内存中的两个暂存器,可以将数据存入其中并进行操作之后输出。两个内存操作流联系在一起,ByteArrayOutoutStream通过write方法获取ByteArrayInputStream的数据。
大小写转化:
String str="HELLO WORLD";
ByteArrayInputStream bais=null; //定义内存输入流
ByteArrayOutputStream baos=null; //定义内存输出流
bais=new ByteArrayInputStream(str.getBytes()); //向内存中输出内容
baos=new ByteArrayOutputStream(); //准备从内存中读取数据
int temp=0;
while((temp=bais.read())!=-1){
char c=(char)temp;
baos.write(Character.toLowerCase(c));
}
String newStr=baos.toString();
bais.close();
baos.close();
注意内存操作流是以内存为准的不是以程序为准。所以这里的输入流也是将数据输入到内存而不是写入程序。