首页
学习
活动
专区
圈层
工具
发布

java inputstream读取文件_java如何获取输入的数据

大家好,又见面了,我是你们的朋友全栈君。 InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len)。...(byte[] b)和InputStream.read(byte[] b,int off,int len)这两个方法都是用来从流里读取多个字节的,有经验的程序员就会发现,这两个方法经常 读取不到自己想要读取的个数的字节...仔细阅读Java的API说明就发现了,这个方法 并不保证能读取这么多个字节,它只能保证最多读取这么多个字节(最少1个)。...) { readCount += inStream.read(b, readCount, count - readCount); } 关于InputStream类的available()方法 这个方法的意思是返回此输入流下一个方法调用可以不受阻塞地从此输入流读取...首先编写两个类,一个用户初始化Socket服务,并且处理每个请求都有新的线程去处理,代码如下: package com.service; import java.net.*; public class

3.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux:java通过Runtime.getRuntime().exec()执行shell,Process.waitFor()返回Required key not available(126)问题

    通过Java方法去调用shell脚本并执行,该方法会先后调用两个脚本,出现问题的是调用第二个脚本的时候,出现了该问题 问题 使用方法Runtime.getRuntime().exec()调用并执行脚本...于是只能捕捉进程的输出来看是否能找到蛛丝马迹 增加代码如下: Process proc = Runtime.getRuntime().exec(strMakePathPath); StreamGobbler...; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class...StreamGobbler extends Thread { InputStream is; String type; public StreamGobbler(InputStream...解决 直接权限安排 chmod 777 文件 再次执行代码,发现问题解决了 结论 java通过Runtime.getRuntime().exec()执行shell,Process.waitFor()返回

    16900

    java Runtime.exec()执行shellcmd命令:常见的几种陷阱与一种完善实现

    @toc背景说明我们项目要java执行命令“dmidecode -s system-uuid”获取结果,然而碰到问题,当项目一直执行好久后,Runtime.getRuntime().exec()获取结果为空...Runtime.getRuntime().exec()执行JVM之外的程序:常见的几种陷阱前言日常java开发中,有时需要通过java运行其它应用功程序,比如shell命令等。...Runtime.exec()常见的几种陷阱以及避免方法陷阱1:IllegalThreadStateException通过exec执行java命令为例子,最简单的方式如下。...执行exec后,通过Process获取外部进程的返回值并输出。...();Process proc = rt.exec(cmd);陷阱4:错把Runtime.exec()的command参数当做命令行本质上来讲,Runtime.exec()的command参数只是一个可运行的命令或者脚本

    1.1K10

    Process类详解

    二、安全风险 描述 java.lang.Process 对象描述进程可能需要通过其输入流对其提供输入,并且其输出流、错误流或两者同时会产生输出。...不正确地处理这些外部程序可能会导致一些意外的异常、DoS,及其他安全问题。 一个进程如果试图从一个空的输入流中读取输入,则会一直阻塞,直到为其提供输入。...因此,在调用这样的进程时,必须为其提供输入。 一个外部进程的输出可能会耗尽该进程输出流与错误流的缓冲区。当发生这种情况时,Java 程序可能会阻塞外部进程,同时阻碍Java程序与外部程序的继续运行。...,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序,waitFor()方法也有很明显的弊端,因为java程序给进程的输出流分配的缓冲区是很小的...脚本执行完成 process.waitFor();

    1.9K20

    Mabatis 源码探究(2)Java 获取mybatis-config.xml的输入流 inputStream对象

    Java 获取mybatis-config.xml的输入流 获得加载核心配置文件的inputStream流 1)Resources.getResourceAsStream(String resource...: 自言自语 获得加载核心配置文件的inputStream流 1)Resources.getResourceAsStream(String resource) 方法 这是我们都写过的一段代码,大家都知道...(null, resource); } 2)getResourceAsStream(null, resource); 方法 将类路径上的资源作为 输入流对象 返回 先将源码贴出来,下面再讲。...获取到了就会返回一个 InputStream 输入流对象给我们。...可以看到在这里, url.openStream();打开到此URL的连接并返回一个InputStream以从该连接读取。没有什么可看的。 牵扯到的小知识点: 检查指定的对象引用不为null 。

    40910

    利用UiAutomator写一个首页刷新的稳定性测试脚本

    本人在做Android APP稳定性测试的过程中,需要测试在不断刷新首页内容的场景下的稳定运行和性能数据的收集。最终根据UiAutomator+多线程解决了这个问题。...思路如下:先用UiAutomator编写好运行脚本,然后在使用快速调试的时候把调试命令输出出来,然后在测试脚本中运行这个调试命令即可,当然还需要多线程来辅助记录log和性能数据。...多线程类代码如下: package monkeytest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream...().exec(ADB_PATH + cmd); } else { p = Runtime.getRuntime().exec("cmd /c "...+ cmd); } // 正确输出流 InputStream input = p.getInputStream();// 创建并实例化输入字节流

    74620

    Java魔法堂:调用外部程序

    认识java.lang.Runtime#exec方法 作用:用于调用外部程序,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。功能就是和windows的“运行”一样。 ?..., String[] envp); Runtime#exec(String[] cmdArray, String[] envp, File workdir); String[] envp 作为调用命令前设置的会话级环境变量...通过Process实例.getInputStream()和Process实例.getErrorStream()获取的输入流和错误信息流是缓冲池是当前Java程序提供的,而不是直接获取外部程序的标准输出流和标准错误流...如: Runtime r = Runtime.getRuntime(); try{ Process proc = r.exec("cmd /c dir"); // 假设该操作为造成大量内容输出...简化输入输出重定向的java.lang.ProcessBuilder 功能和java.lang.runtime#exec一样,只是java.lang.ProcessBuilder仅接收命令行以数组形式传递给

    1.9K10

    如何在 Java 中运行 shell 命令-Java快速入门教程

    概述 在本文中,我们将学习如何从 Java 应用程序执行 shell 命令。 首先,我们将使用 .exec() 方法,其由运行时类提供。然后,我们将了解ProcessBuilder,它更易于定制。...输入和输出 通常,我们需要连接进程的输入和输出流。具体来说,输入流充当标准输入,输出流充当过程的标准输出。我们必须始终使用输出流。否则,我们的流程将不会返回,并将永远挂起。...; if (isWindows) { process = Runtime.getRuntime() .exec(String.format("cmd.exe /c dir %s",...homeDirectory)); } else { process = Runtime.getRuntime() .exec(String.format("/bin/sh -c ls...因此,我们可以在其中创建要使用的管道的整个命令并将其传递给.exec(): if (IS_WINDOWS) { process = Runtime.getRuntime() .exec

    50710

    java调用外部应用程序

    ffmpeg -i input.mp4 output.avi 在java中调用外部应用一般都会使用 Runtime.getRuntime().exec(); 以前其实也使用过,但是没有过深入的研究,在使用是发现也会有各种无法预料的问题出现...,简单的调用过程如下: Process p = Runtime.getRuntime().exec("ffmpeg -i .....最后其实在ffmpeg命令前添加 cmd /c 即可,但是百度cmd /c 主要的作用是在执行脚本时保持关闭当前窗口。具体是什么原因导致这样的差别而引起程序运行的怪异现象?...} catch (ExecuteException e) { e.printStackTrace(); } } 使用的是脚本完成...: set PATH=%PATH%;%1 ffmpeg.exe -i %2 %3 pause 同样会遇到上面的问题,目前仅作为问题记录,后期回头深入研究再做处理

    3.9K70

    Java代码审计基础之反射

    byte[] a = new byte[1024]; Process cmd = Runtime.getRuntime().exec("whoami"); InputStream input =...Process cmd = Runtime.getRuntime().exec(“whoami”) 首先先看看 Runtime.getRuntime().exec 是什么东西,返回值类型是什么样的:...: InputStream 输入流,即数据流入,读入数据 OutputStream 输出流,即数据输出,写入数据 该代码读取上一步 Process 类型的数据流 input.read(a); 在上一步调用...以便后面打印输出 这就是一个简单的 Java 命令执行并回显结果。 我们可以看到主要调用了 Runtime.getRuntime().exec 那么我们要如何通过反射的方式进行调用呢?...//数据输入流,读入数据 InputStream res = p.getInputStream(); res.read(a); System.out.println(new

    53840
    领券