DataInputSream和DataOutputSream
//出现原因:流写入只写入最后8位,为了操作方便,其产生
DataOutputStream dos = new DataOutputStream(new FileOutputStream(""));//写入流
//示例方法
dos.writeInt(234);//写入一个整数
dos.writeBoolean(true);//写入一个Boolean类型值
dos.writeDouble(9887.543);//写入一个浮点数类型
dos.writeUTF("");//用其写的必须要用readUTF读出来
DataInputStream dis = new DataInputStream(new FileInputStream(""));//读取流
int num = dis.readInt();
boolean b = dis.readBoolean();
double d = dis.readDouble();
ByteArrayInputStream ByteArrayOutputStream
//主要是为了用操作流的思想操作数组
//因为没有调用底层,不需要closeByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.size()//获取数组中长度
bos.toString()//将数组中的元素以字符串的方式打印
bos.writeTo(out);//将数组中元素写入一个流中
//而CharArrayReader,CharArrayWriter,StringReader,StringWriter操作方式与其基本相同
EncodeStream
//常见编码表 GBK:两个字节表示一个字符
UTF-8:可用三个字节表示一个字符
//java存储文件时,底层需要根据编码表将其转换成01存储到硬盘中
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(""),"code");//字符流转换成为字节流桥梁
InputStreamReader isr = new InputStreamReader(new FileInputStream(""),"code");
解码编码
编码:字符串转换成为数组
String s = "你好";byte[] b1 = s.getBytes("GBK");
System.out.println(Arrays.toString(b1));
解码:字符数组转换成为字符串
String s1= new String(b1,"GBK");
编码用GBK时,可用iso8859-1解码,再用iso8859-1编码,然后用GBK解码,可得到原样信息,因为iso8859-1不识别中文,会返回原样编码,(应用领域:cookie)//但不可以用utf-8因为其也识别中文,当其解码失败时,会到未知编码区,返回相似编码
String s = "你好";
byte[] b1 = s.getBytes("GBK");
System.out.println(Arrays.toString(b1));
String s1= new String(b1,"iso8859-1");
System.out.println("s1="+s1);
byte[] b2 = s1.getBytes("iso8859-1");
System.out.println(Arrays.toString(b2));
String s2 = new String(b2,"gbk");
System.out.println("s2="+s2);
byte[] b1 = s.getBytes("GBK");
System.out.println(Arrays.toString(b1));
String s1= new String(b1,"iso8859-1");
System.out.println("s1="+s1);
byte[] b2 = s1.getBytes("iso8859-1");
System.out.println(Arrays.toString(b2));
String s2 = new String(b2,"gbk");
System.out.println("s2="+s2);
特殊情况-联通
//当文件中联通开头时,会发现出现乱码,因为这是联通符合一种特殊情况,满足110开头的utf-8编码,所以自动以utf-8去解码
//需要解决这问题,只需要在联通前加一个汉字即可。
本文详细介绍了Java中的IO流操作,包括DataInputStream和DataOutputStream的基本使用方法,如何进行数据的读写,以及特殊情况下如何处理编码问题。同时,还探讨了ByteArrayInputStream和ByteArrayOutputStream在处理数组时的应用。
2430

被折叠的 条评论
为什么被折叠?



