如何理解JAVA.IO、字符编码

发布时间:2021-10-25 10:21:47 作者:iii
来源:亿速云 阅读:118

这篇文章主要介绍“如何理解JAVA.IO、字符编码”,在日常操作中,相信很多人在如何理解JAVA.IO、字符编码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解JAVA.IO、字符编码”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1 JAVA.IO字节流

如何理解JAVA.IO、字符编码

inputstream.png

  1. //用ByteArrayOutputStream暂时缓存来自其他渠道的数据 

  2. ByteArrayOutputStream data = new ByteArrayOutputStream(1024); //1024字节大小的缓存区 

  3. data.write(System.in.read()); // 暂存用户输入数据 

  4.  

  5. //将data转为ByteArrayInputStream 

  6. ByteArrayInputStream in = new ByteArrayInputStream(data.toByteArray()); 


//java对象的写入 FileOutputStream fileStream = new FileOutputStream("example.txt"); ObjectOutputStream out = new ObjectOutputStream(fileStream); Example example = new Example(); out.writeObject(example);  //java对象的读取 FileInputStream fileStream = new FileInputStream("example.txt"); ObjectInputStream in = new ObjectInputStream(fileStream); Example = (Example) in.readObject();
// 创建一个发送者对象 Sender sender = new Sender(); // 创建一个接收者对象 Receiver receiver = new Receiver(); // 获取输出管道流 // 获取输入输出管道流 PipedOutputStream outputStream = sender.getOutputStream();  PipedInputStream inputStream = receiver.getInputStream(); // 链接两个管道,这一步很重要,把输入流和输出流联通起来   outputStream.connect(inputStream); sender.start();// 启动发送者线程 receiver.start();// 启动接收者线程
InputStream in1 = new FileInputStream("example1.txt"); InputStream in2 = new FileInputStream("example2.txt"); SequenceInputStream sequenceInputStream = new SequenceInputStream(in1, in2); //数据读取 int data = sequenceInputStream.read();
ByteArrayOutputStream out = new ByteArrayOutputStream(2014); //数据写入,使用DataOutputStream装饰一个InputStream //使用InputStream具有对基本数据的处理能力 DataOutputStream dataOut = new DataOutputStream(out); dataOut.writeDouble(1.0); //数据读取 ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); DataInputStream dataIn = new DataInputStream(in); Double data = dataIn.readDouble();

2 JAVA.IO字符流

如何理解JAVA.IO、字符编码

21.png

//InputStream转为Reader InputStream inputStream = new ByteArrayInputStream("程序".getBytes()); InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); //OutputStream转为Writer OutputStream out = new FileOutputStream("example.txt"); OutputStreamWriter writer = new OutputStreamWriter(out); //以字符为单位读写 writer.write(reader.read(new char[2]));

3 乱码问题和字符流

  1. ByteArrayInputStream in = new ByteArrayInputStream("程序大法好".getBytes()); 

  2. byte[] buf = new byte[2]; //读取流的两个字节 

  3. in.read(buf); //读取数据 

  4. System.out.println(new String(buf)); //乱码 

  5. ---result----  

  6. �  //乱码 


InputStreamReader reader =        new InputStreamReader(inputStream, StandardCharsets.UTF_8);

4 字符集和字符编码的概念区分

范围 Unicode(Binary) UTF-8编码(Binary) UTF-8编码byte长度 U+0000~U+007F 00000000  00000000 00000000 0XXXXXXX 0XXXXXX 1 U+0080~U+07FF 00000000 00000000 00000YYY  YYXXXXXX 110YYYYY 10XXXXXX 2 U+0800~U+FFFF 00000000 00000000 ZZZZYYYY YYXXXXXX  1110ZZZZ 10YYYYYY 10XXXXXX 3 U+010000~U+10FFFF 00000000 000AAAZZ ZZZZYYYY  YYXXXXXX 11110AAA 10ZZZZZZ 10YYYYYY 10XXXXXX 4

System.out.println(Charset.defaultCharset()); //输出java默认编码 for (byte item : "程序".getBytes(StandardCharsets.UTF_16)) {     System.out.print("[" + item + "]"); } System.out.println(""); for (byte item : "程序".getBytes(StandardCharsets.UTF_8)) {     System.out.print("[" + item + "]"); } ----result---- UTF-8       //java默认编码UTF-8 [-2][-1][122][11][94][-113] //UTF_16:6个字节? [-25][-88][-117][-27][-70][-113] //UTF_8:6个字节 正常
  1. for (byte item : "程".getBytes(StandardCharsets.UTF_16)) { 

  2.     System.out.print("[" + item + "]"); 

  3. ---result-- 

  4. [-2][-1][122][11] 


到此,关于“如何理解JAVA.IO、字符编码”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Java 字符编码与解码
  2. 如何修改MySQL字符编码

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Mysql知识点以及面试点的示例分析

下一篇:Python爬虫经常会被封的原因是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》