028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

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

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

网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;成都网站制作、网站设计收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了十多年的创新互联公司网站建设公司。

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、字符编码”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


当前题目:如何理解JAVA.IO、字符编码
网站网址:http://www.tsicrk.com/article/jhgppc.html

其他资讯

让你的专属顾问为你服务

2.3119s