首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么InputStreamReader无法读取websocket包的内容?

InputStreamReader是Java中用于读取字符流的类,它通常用于读取文本文件或网络流。然而,WebSocket是一种基于TCP的协议,它使用二进制数据帧进行通信,而不是纯文本。

由于InputStreamReader是用于读取字符流的,它无法直接处理二进制数据。当尝试使用InputStreamReader读取WebSocket包的内容时,它会将二进制数据解析为字符数据,导致数据损坏或乱码。

要读取WebSocket包的内容,应该使用专门用于处理二进制数据的类,例如InputStream或ByteBuffer。这些类可以直接读取和处理二进制数据,而不会引起数据损坏或乱码。

在Java中,可以使用javax.websocket包提供的WebSocket API来处理WebSocket通信。通过使用WebSocket API,可以轻松地读取和处理WebSocket包的内容,而不需要使用InputStreamReader。

总结起来,InputStreamReader无法读取WebSocket包的内容是因为它是用于读取字符流的,而WebSocket使用的是二进制数据帧进行通信。要处理WebSocket包的内容,应该使用专门用于处理二进制数据的类或WebSocket API。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么SpringBoot jar包中的文件读取不到?

菜菜轻声嘀咕:「在本地 IDEA 程序跑着没问题,能够成功读取资源文件,单元测试都跑过了,为啥部署到测试环境就不好使了呢?」 菜菜边嘀咕边开启了 Debug 模式。...定义资源匹配规则,会在所有的JAR包的根目录下搜索指定文件 String matchPattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX.../cool/zs/cert_zs.key 分析原因 resource.getFile().getPath().split("/") ,Spring 没办法通过 File 的形式访问 jar 包里面的文件...3 菜菜侃大山 1、如何获取 SpringBoot jar 包中的指定文件夹下的资源文件子目录?...菜菜曰:SpringBoot 没办法通过 File 的形式访问 jar 包里面的文件,借助 resource.getURL().getPath() 获取当前资源对应的URL的路径得以解决。

1.4K20
  • java中jar包内的类访问jar包内部的资源文件路径和获得读取资源文件内容的问题

    在大数据开发和java web开发中,我们有时会在程序中读取一些资源文件的内容。...当我们在本地运行调试的时候是没有任何问题的,但是当我们将程序打成jar包上传到集群中后运行时,发现报错:“找不到配置文件的路径”。虽然jar中确实存在配置文件,但是还是读取不到。...相关解决方法可以参考以下相关资料:  java中jar包内的类访问jar包内部的资源文件的路径问题: http://blog.csdn.net/mm_bit/article/details/50372229...获取jar包内部的资源文件: http://blog.csdn.net/luo_jia_wen/article/details/50057191 【解惑】深入jar包:从jar包中读取资源文件: http...://www.iteye.com/topic/483115  jar读取资源配置文件,jar包内包外,以及包内读取目录的方法: http://blog.csdn.net/T1DMzks/article/

    9.4K20

    从一个被Tomcat拒绝的漏洞到特殊内存马

    下找到tomcat-websocket.jar 找到WsFilter的代码,在doFilter中插入一些代码 我这里是简单的回显执行命令,也可以是一些其他逻辑 package org.apache.tomcat.websocket.server...Tomcat服务,然后才能替换依赖库 如果思路一直放在如何修改被占用的依赖库,那么这个问题是无解的 但我发现了一种巧妙的方法,来自于Tomcat对Jar包的特殊加载顺序 (这里是Windows Tomcat...8的测试环境,其他环境不确定有这样的顺序) 如果我在Tomcat/lib下复制一个tomcat-websocket.jar 区别在于.jar之前加入一个空格:tomcat-websocket .jar...),data); } catch (Exception e) { e.printStackTrace(); } 暂时是无法触发的,不过如果程序添加新的功能或者特殊情况,一定会重启 (其实服务端的...: 黑客可以获取路径得到tomcat版本,比如我这里的8.5.72,分割路径即可获得字符串 然后给新jar包命名位tomcat-websocket-8.5.72.jar 相对于加个.或者空格,这种做法更为隐蔽

    64810

    WebSocket系列之二进制数据设计与传输

    本文作为WebSocket系列的第四篇内容,将会用一个简单的IM聊天应用把整个WebSocket传输二进制数据类型的内容连接起来,让用户对整个WebSocket传输二进制数据的方法有个了解。...它的三要素是:语法、语义、时序。 通过百度百科中的介绍,我们对协议的概念有了一个基础的了解。通俗来说,协议就是通信双方约定好的一套规则。 为什么要设计协议 没有规矩不成方圆。...通信双方只有通过协议,才能够识别对方发送的数据内容。 我们应该如何设计这套协议 首先,协议的设计应该能够区分不同的各个数据包;其次,它还需要具备一定的兼容性。...扩展此协议 当此协议字段无法满足并且已经在线上使用时,我们应该如何扩展呢?...扩展前的应用仍然会读取之前已经确定的数据协议,只需要保证内容不变,那么功能也不会变。 扩展后的应用能够解析扩展后的协议,因此得到更多的数据,从而可以实现更多的功能。

    7.1K10

    SocketRocket源码分析

    这个字符串是RFC规范定死的,至于为什么是这么一串,楼主也不知所以然。...也就是说,WebSocket的RFC标准是不会产生粘包、断包问题的。无需应用层开发人员关心缓存以及手工组装message。...数据是通过CFStream流的方式回调回来的,每次拿到流数据,都是先放在数据缓冲区中,然后去读当前消息帧的头部,得到当前数据包的大小,然后再去创建消费者对象consumer,去读取缓冲区指定数据包大小的内容...接着我们大概来看看这个流程: 上面这个方法就是一个读取头部的方法,之前我写过断包粘包的文章就是用一个\r\n来分割头部和正文,这里是用了\r\n\r\n,每次读到这个标识符为止,就是读取了一个完整的WebSocket...,到内容的读取过程: 每次我们读取新的一帧数据,都会调用这么个方法: 会清空上一帧的一些信息,然后开始当前帧的读取,我们来简单看看一个WebSocket消息帧里包含什么: 就是这么一张图,大家应该经常见

    1.1K30

    项目打包成 jar 后包无法读取srcmainresources下文件

    项目打包成 jar后包无法读取src/main/resources下文件 一、项目场景 二、问题描述 发现问题 分析问题 为什么使用 ClassPathResource 后, 可以找到打包后的文件路径?...src/main/resources下无法找到该文件 分析问题 项目在打包之后, 位于 resource目录下的文件, 最常见的就是各种Spring配置文件就会打包在 BOOT-INF/classes...在定位问题的过程中发现,这里提供了一个思路 就是SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此可以使用以下方式 /** * 通过ClassPathResource...类获取,建议SpringBoot中使用 * springboot项目中需要使用此种方法,因为jar包中没有一个实际的路径存放文件 * * @param fileName...(fileName); is = resource.getInputStream(); /** * Java读取txt文件的内容 * * @param fileName

    13.3K20

    保存文件到SD卡

    /****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/data...Android本身提供了/data/data/com.companyname.appname/这个路径供广大app存放configuration以及user data之类的东西,为什么很多App要把配置文件甚至...祈雨蓝: 没有限制 另外对应着 SD卡上也有一个文件夹 /Android/data/包名,这个文件夹也是用来给程序放应用数据的,此文件夹读写在4.4及以后不需要外置储存区读写权限。...这两个文件夹区别在于 data 分区有权限控制,除非应用自己同意,否则其他应用无法读取内部的数据,而sdcard/Android下的文件只要有外置空间读取权限就可以读取。...import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader

    2.7K20

    【Java爬虫】006-URLConnection与HttpURLConnection(网页内容获取)

    最后更新:2020年8月31日11:42:00 一、概述 URLConnection是java.net包中的一个抽象类,其主要用于实现应用程序与URL之间的通信; HttpURLConnection继承自...URLConnection,也是抽象类; 在网络爬虫中,可以使用URLConnection或HttpURLConnection请求URL获取流数据,通过对流数据的操作,获取具体的实体内容; 二、实例化...1、说明 URLConnection与HttpURLConnection都是抽象类,无法直接创建实例化对象,但可以通过java.net包URL类中的openConnection()方法创建URLConnection...(), StandardCharsets.UTF_8)); //读取内容 String readLine; StringBuilder...(), "utf-8")); //读取内容 String readLine = null; StringBuffer response = new StringBuffer();

    12710

    手写4个mini版的tomcat!

    写在前面 Apache Tomcat 是Java Servlet, JavaServer Pages (JSP),Java表达式语言和Java的WebSocket技术的一个开源实现 ,通常我们将Tomcat...什么是http协议 Http是一种网络应用层协议,规定了浏览器与web服务器之间如何通信以及数据包的结构。 通信大致可以分为四步: 先建立连接。 发送请求数据包。 发送响应数据包。 关闭连接。...这也就是为什么大家都把Tomcat叫做Servlet容器的原因,其实真正的容器还是java集合。...所以,大家在网上看到的手写tomcat的,也有使用线程池来做的,这里希望大家能get到为什么使用线程池来实现。另外,其实在tomcat高版本中已经没有使用BIO了。 ?...也是可以通过解析某个目录下的server.xml文件,并把内容赋给java中相应的变量罢了。

    49530

    Java文件读写

    8.类File一般不涉及文件内部的具体内容,而是从整体上对文件进行处理,如获取各种各样的文件消息或者删除文件。类File不仅可以对文件进行操作,而且还可以对路径进行操作。...(串行化的概念:指对象通过把自己转化为一系列字节,记录字节的状态数据,以便再次利用的这个过程) 20.串行化(Serializable)是Java.io包中定义的一个接口。...26.InputStreamReader类继承自Reader类,通过其read方法从字节流中读取一个或者多个字节数据转换为字符数据。它可以接一个缓冲流来提高效率。...2)writer类是定义流式字符输出的抽象类 3)FileReader类创建了一个可以读取文件内容的Reader类 4)FileWriter创建一个可以写文件的Writer类 用FileReader...fr=new InputStreamReader(fis,"gbk");//重点是这个,我也不知道为什么用utf-8不行 BufferedReader br=new BufferedReader

    63910

    获取类路径某个json文件中的内容字符串

    前言 实际项目中可能会有需要读取类路径下面的配置文件中的内容的需求,由于springboot项目打包的是jar包,通过文件读取获取流的方式开发的时候没有问题,但是上到linux服务器上就有问题了,对于这个问题记录一下处理的方式...类加载器的方式 通过类加载器读取文件流,类加载器可以读取jar包中的编译后的class文件,当然也是可以读取jar包中的文件流了 比如要读取resources目录下common/tianyanchasearch.json...FileUtil.getStringFromInputStream(resourcePath); return GlobalResult.succeed(JSON.parseObject(content)); /** * 从输入流中获取文件内容字符串...inputStream = classPathResource.getStream(); bufferedReader = new BufferedReader(new InputStreamReader...推测主要原因是springboot内置tomcat,打包后是一个jar包,因此通过文件读取获取流的方式行不通,因为无法直接读取压缩包中的文件,读取只能通过流的方式读取

    2.6K30

    file,fileInputStream, fileReader,inputStreamReader等java文件流类的关系区别

    换句话说,流类关注的是文件内容,而File类关注的是文件在磁盘上的存储。...类的区别: 流类关注的是文件内容,而File类关注的是文件在磁盘上的存储。...String指定路径就可以了,一直不明白为什么很多人都先构造一个File对象,现在终于明白了,“如果处理文件或者目录名,就应该使用File对象,而不是字符串。”...则按字节流的方式读取文件; InputStreamReader可以将读如stream转换成字符流方式,是reader和stream之间的桥梁; 最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了...总结以上内容,得出比较好的规范用法: 1) File file = new File (“hello.txt”); FileInputStream in=new FileInputStream(

    70910

    设计模式(七):结构型之适配器模式

    提供了代理、适配器、桥接、装饰、外观、享元、组合 7 种结构型模式 行为型模式 用于描述类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,以及怎样分配职责 提供了模板方法、策略、命令、职责链...,同时又继承现有组件库中已经存在的组件 读卡器 现有一台电脑只能读取SD卡 而要读取TF卡中的内容的话就需要使用到适配器模式 创建一个读卡器,将TF卡中的内容读取出来 类图如下: 代码如下: //...转换流使用的就是适配器模式 InputStreamReader继承自java.io包中的Reader read的重载方法都直接或间接调用了read(char cbuf[], int off, int len...)方法 InputStreamReader则对他中的抽象的未实现的方法给出实现,如下: public class InputStreamReader extends Reader { private...(StreamDecoder类对象),在Sun的JDK实现中 实际的方法实现是对sun.nio.cs.StreamDecoder类的同名方法的调用封装 类结构图如下: InputStreamReader

    11010

    Java IO学习笔记三

    参考文章 Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类。...InputStreamReader InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。...它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。...主要的功能还是从文件中读取内容,不过是一次性的读取多个字节,这个很像它的子类FileReader 构造函数 InputStreamReader(InputStream in) 创建一个使用默认字符集的...(c); //将内容读取到数组中 System.out.println(len); for (int i = 0; i < c.length

    34010

    掌握Java中的FileReader类:逐步教程

    摘要  FileReader类是Java.io包中的一个类,用来读取文件中的字符数据,它继承了InputStreamReader类。...FileReader类概述  FileReader类是Java.io包中的一个类,用来读取文件中的字符数据,它继承了InputStreamReader类,InputStreamReader类又继承自Reader...部分源码截图如下:应用场景案例  FileReader类通常用于读取文本文件的内容。...然后,使用while循环,从reader中读取内容,并将读取到的数据存入buffer中。如果读取的长度为-1,表示已经读取到文件末尾,循环结束。  ...小结  本文介绍了Java.io包中的FileReader类,包括FileReader类的构造方法、常用方法、应用场景、优缺点等内容,并提供了一个简单的测试用例。

    42342

    FileReader 和FileInputStream的区别

    换句话说,流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储 File 类的主要方法有(),lastMod: getName(),getCanonicalFileified(),isDerector...(),isFile(),getPath() 等; 流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储。...String 指定路径就可以了,一直不明白为什么很多人都先构造一个 File 对象,现在终于明白了,“如果处理文件或者目录名,就应该使用 File 对象,而不是字符串。”!...它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。...=null)  { System.out.println(data); } 总结以上内容,得出比较好的规范用法: 1) File file = new File (“hello.txt

    69320
    领券