数据输入/输出流与字节转换流
一.数据输入/输出流
1 /** 2 * 数据输入输出流 3 * 类说明 4 * 1.public class ByteArrayOutputStream extends OutputStream 5 * 该类实现了将数据写入字节数组的输出流。 当数据写入缓冲区时,缓冲区会自动增长。 6 * 数据可以使用toByteArray()和toString() 。 7 */ 8 import java.io.ByteArrayInputStream; 9 import java.io.ByteArrayOutputStream; 10 import java.io.DataInputStream; 11 import java.io.DataOutputStream; 12 import java.io.IOException; 13 14 public class TestDateStream { 15 public static void main(String[] args) { 16 ByteArrayOutputStream baos= 17 new ByteArrayOutputStream(); 18 /* 19 * 数据输出流使应用程序以便携式方式将原始Java数据类型写入输出流。 20 * 然后应用程序可以使用数据输入流来读取数据。 21 */ 22 DataOutputStream dos= 23 new DataOutputStream(baos); 24 try { 25 //输出一个随机数 26 dos.writeDouble(Math.random()); 27 //输出一个Boolean类型的随机数 28 dos.writeBoolean(true); 29 /* 30 * toByteArray()创建一个新分配的字节数组。 其大小是此输出流的当前大小, 31 * 缓冲区的有效内容已被复制到其中。 32 * 字节数组输入流的长度就等于字节数组输出流的长度 33 */ 34 ByteArrayInputStream bais= 35 new ByteArrayInputStream(baos.toByteArray()); 36 //available() 返回可从此输入流读取(或跳过)的剩余字节数。 37 System.out.println(bais.available()); 38 DataInputStream dis = new DataInputStream(bais); 39 System.out.println(dis.readDouble()); 40 System.out.println(dis.readBoolean()); 41 dos.close(); dis.close(); 42 } catch (IOException e) { 43 e.printStackTrace(); 44 } 45 } 46 }
二.字节转换流
1 import java.io.FileNotFoundException; 2 import java.io.FileOutputStream; 3 import java.io.IOException; 4 import java.io.OutputStreamWriter; 5 6 public class TestTransForm { 7 public static void main(String[] args){ 8 try { 9 //确定输出目的文件 10 OutputStreamWriter osw = new OutputStreamWriter( 11 new FileOutputStream("C:/Users/罗摩衔那/Desktop/write.txt")); 12 //被输出字符流数据 13 osw.write("mircosoftibmsunapplehp"); 14 //getEncoding() 15 //返回此流使用的字符编码的名称。 16 System.out.println(osw.getEncoding()); 17 osw.close(); 18 //true代表在原来的基础之上进行追加,否则会被擦除 19 osw=new OutputStreamWriter( 20 new FileOutputStream("C:/Users/罗摩衔那/Desktop/write.txt",true),"ISO8859_1"); 21 osw.write("mircosoftibmsunapplehp"); 22 System.out.println(osw.getEncoding()); 23 osw.close(); 24 } catch (IOException e) { 25 e.printStackTrace(); 26 } 27 } 28 }