码农zzq 2024-04-09 13:03 采纳率: 100%
浏览 11
已结题

inputstream输出有乱码

问题:
输出的最后一行总是有这样的乱码,但是修改了字符集还是这样

img


代码如下:


```java
public static void loadFileSystemResourcesDemo(String path) {
        FileSystemResource resource = new FileSystemResource(path);
        System.out.println(resource.getFilename());
        System.out.println(resource.getDescription());
        try {
            InputStream inputStream = resource.getInputStream();
            byte[] b =new byte[1024];
            while (inputStream.read(b) != -1) {
                System.out.println(new String(b,"utf-8"));
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

  • 写回答

3条回答 默认 最新

  • GISer Liu 2024-04-09 13:06
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据你的描述,最后一行输出总是存在乱码的问题,即使修改了字符集也无法解决。这个问题可能是由于InputStream没有完全读取完毕就直接转换为字符串输出所导致的。这里提供一种解决方案,你可以尝试在读取时使用InputStreamread(byte[] b, int off, int len)方法,并在将字节转换为字符串时,只转换实际读取到的字节部分。
    下面是修改后的代码:
    javaCopy code

    import java.io.IOException;
    import java.io.InputStream;
    import org.springframework.core.io.FileSystemResource;
    public static void loadFileSystemResourcesDemo(String path) {
    FileSystemResource resource = new FileSystemResource(path);
    System.out.println(resource.getFilename());
    System.out.println(resource.getDescription());
    try {
    InputStream inputStream = resource.getInputStream();
    byte[] b = new byte[1024];
    int len;
    while ((len = inputStream.read(b, 0, b.length)) != -1) {
    System.out.println(new String(b, 0, len, "utf-8"));
    }
    } catch (IOException e) {
    throw new RuntimeException(e);
    }
    }
    

    修改后的代码中,在``` inputStream.read(b, 0, b.length)

    ```中指定了偏移量和读取长度,确保了只读取实际读取到的字节数。然后在将字节数组转换为字符串时,也只转换了实际读取到的部分,避免了最后一行乱码的问题。
    你可以尝试运行这个修改后的代码,看看是否能够解决你遇到的问题。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费