java用inputstream读取输入
时间: 2024-03-09 07:22:58 浏览: 71
可以使用以下代码来使用InputStream读取输入:
```java
import java.io.InputStream;
import java.io.IOException;
public class InputStreamExample {
public static void main(String[] args) throws IOException {
InputStream inputStream = System.in;
byte[] inputBytes = new byte[1024];
int length = 0;
while ((length = inputStream.read(inputBytes)) != -1) {
String inputString = new String(inputBytes, 0, length);
System.out.println("Input received: " + inputString);
}
}
}
```
这个程序将从标准输入读取输入,并将其打印到控制台。可以通过在控制台中输入文本来测试它。当您不再需要读取输入时,可以按Ctrl + D来发送EOF信号以退出程序。
相关问题
java socketinputstream分段读取
在Java中,通过SocketInputStream可以从网络上的一个Socket连接中读取数据。有时候,接收到的数据可能会很大,无法一次性读取完毕。这时候就需要进行分段读取。
SocketInputStream类提供了多个read()方法,其中一个允许我们指定一个byte数组作为缓冲区,来一次性读取多个字节。我们可以使用一个循环来重复调用read()方法,每次读取一部分数据,直到读完所有的数据为止。
示例代码如下:
```
Socket socket = new Socket("127.0.0.1", 8080);
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024]; // 缓冲区大小
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
// 对已读取的字节进行处理
processBytes(buffer, bytesRead);
}
```
在上面的代码中,首先创建了一个Socket对象,并通过getInputStream()方法获取到与该Socket连接关联的输入流。然后创建了一个大小为1024的byte数组作为缓冲区。
接下来,使用一个循环来反复调用read()方法,每次读取一部分数据。read()方法返回的是实际读取的字节数,如果返回-1,则表示已经读取完所有数据。
在循环内部,可以对已经读取的字节进行处理,例如将其写入文件或进行其他操作。
需要注意的是,由于网络延迟等原因,可能并不是每次都能读取到完整的数据块。因此,我们需要自己维护一个缓冲区,确保已读取的数据是完整的。
总结来说,通过使用SocketInputStream的read()方法,我们可以实现分段读取数据,将接收到的大数据分成小块进行处理。这样可以避免一次性读取大量数据造成内存占用过高的问题。
Java InputStream流读取byte[]
可以使用 InputStream 的 read(byte[] b) 方法来读取字节流到一个 byte 数组中。该方法的语法如下:
```
public int read(byte[] b) throws IOException
```
其中,参数 b 是用来存储读取数据的字节数组,返回值是读取的字节数。该方法会尽可能多地读取字节流到数组中,但不保证一定读满整个数组。
以下是一个示例代码,演示了如何使用 InputStream 读取字节流到 byte 数组中:
```java
InputStream inputStream = new FileInputStream("file.txt");
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = inputStream.read(buffer)) != -1) {
// 处理读取到的字节数据
System.out.println("Read " + bytesRead + " bytes.");
}
inputStream.close();
```
在上述代码中,我们创建了一个 FileInputStream 对象 inputStream,用于读取一个名为 "file.txt" 的文件。然后创建一个大小为 1024 的字节数组 buffer,用来存储读取到的字节数据。在 while 循环中,我们使用 inputStream.read(buffer) 方法读取字节流到 buffer 数组中,并将读取的字节数赋值给 bytesRead 变量。如果 bytesRead 的值为 -1,说明已经读取到了文件末尾,循环结束。否则,我们可以在循环体内处理读取到的字节数据。最后,我们使用 inputStream.close() 方法关闭输入流。
阅读全文