java中DataInputStream如何读取我们控制台的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中DataInputStream如何读取我们控制台的字符串相关的知识,希望对你有一定的参考价值。

java中DataInputStream如何读取我们控制台的字符串
DataInputStream din = new DataInputStream(System.in);
这样读出来的是错误的

java中DataInputStream使用构造参数,使用bufferreader,输入参数system.in就可以读取控制台的字符串,如下代码:

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;

public class ceshi 
public static void main(String[] args) 

DataInputStream in = new DataInputStream(new BufferedInputStream(
System.in));//新建DateInputSteam,接收控制台的信息
String s;
try 
while ((s = in.readLine()).length() != 0)
System.out.println(s);//读取控制台信息,并打印出来
// An empty line terminates the program
 catch (IOException e) 
e.printStackTrace();




运行结果如下:

参考技术A DataInputStream只是一个数据流的包装
控制台的读取是用System.in或是scanner类来读取的
如果你非要用DataInputStream的话,你可以先用scanner来读取一个字符,再把这个字符转成字节流给DataInputStream读取
参考技术B DataInputStream dis = new DataInputStream(System.in);

有问题啊,没测试,手写的,那就按 浮生萧条Ice 的来就行了。。。。
怎么读取别人都告诉你了
参考技术C DataInputStream din = new DataInputStream(System.in);
不知道这样可以不 呵呵
参考技术D public class test

public static void main(String[] args)

DataInputStream in =
new DataInputStream(
new BufferedInputStream(System.in));
String s;
try
while((s = in.readLine()).length() != 0)
System.out.println(s);
// An empty line terminates the program
catch(IOException e)
e.printStackTrace();


本回答被提问者采纳

Java 之 数据IO流-DataInputStream

一、DataInputStream概述

  数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。

二、构造方法

DataInputStream(InputStream in) 

    使用指定的底层 InputStream 创建一个 DataInputStream

三、常用方法

  常用方法列表:

int read(byte[] b) : 从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组 b 中。 
int read(byte[] b, int off, int len):从包含的输入流中将最多 len 个字节读入一个 byte 数组中。 
boolean readBoolean() : 读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false。 
byte readByte():读取并返回一个输入字节。
char readChar() :读取两个输入字节并返回一个 char 值。
double readDouble(): 读取八个输入字节并返回一个 double 值。
float readFloat():读取四个输入字节并返回一个 float 值。
void readFully(byte[] b):从输入流中读取一些字节,并将它们存储在缓冲区数组 b 中。
void readFully(byte[] b, int off, int len):从输入流中读取 len 个字节。
int readInt() :读取四个输入字节并返回一个 int 值。
long readLong() :读取八个输入字节并返回一个 long 值。
short readShort():读取两个输入字节并返回一个 short 值。

  

四、DataOutputStream概述

  数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。

五、构造方法

DataOutputStream(OutputStream out) 

         创建一个新的数据输出流,将数据写入指定基础输出流。

六、常用方法

  常用方法列表:

void flush():清空此数据输出流。 
int size():返回计数器 written 的当前值,即到目前为止写入此数据输出流的字节数。 
void write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入基础输出流。 
void write(int b):将指定字节(参数 b 的八个低位)写入基础输出流。 
void writeBoolean(boolean v):将一个 boolean 值以 1-byte 值形式写入基础输出流。 
void writeByte(int v):将一个 byte 值以 1-byte 值形式写出到基础输出流中。 
void writeBytes(String s):将字符串按字节顺序写出到基础输出流中。 
void writeChar(int v):将一个 char 值以 2-byte 值形式写入基础输出流中,先写入高字节。 
void writeChars(String s):将字符串按字符顺序写入基础输出流。 
void writeDouble(double v) :使用 Double 类中的 doubleToLongBits 方法将 double 参数转换为一个 long 值,然后将该 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。 
void writeFloat(float v) :使用 Float 类中的 floatToIntBits 方法将 float 参数转换为一个 int 值,然后将该 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。 
void writeInt(int v) :将一个 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。 
void writeLong(long v) : 将一个 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。 
void writeShort(int v) : 将一个 short 值以 2-byte 值形式写入基础输出流中,先写入高字节。 
void writeUTF(String str) :以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。 

七、应用案例

  当程序中有这样的一组数组:

int num = 10;
char c = ‘好‘;
double d = 88.88;
String info = "Hello,World";
boolean good = true;

  程序运行过程中,想要临时退出,下次希望从这个状态继续恢复执行。

  希望 Java 能够输出各种数据类型的数据,读取时,能还原各种数据类型的数据,因为这些数据不是纯文本,只能选择字节流。

  要求:使用 DataOutputStream 写入的文件或数据,得用 DataInputStream 来读取,并且要求读的顺序与写的顺序要一致。

  Demo:

 1   @Test
 2     public void test01()throws IOException{
 3         int num = 10;
 4         char c = ‘好‘;
 5         double d = 188.88;
 6         String info = "Hello World";
 7         boolean good = true;
 8          
 9         FileOutputStream fos = new FileOutputStream("data.dat");
10         /*fos.write(num);//错误的
11         fos.write(c);
12         fos.write((byte)d);*/
13         DataOutputStream dos = new DataOutputStream(fos);
14         
15         dos.writeInt(num);
16         dos.writeChar(c);
17         dos.writeDouble(d);
18         dos.writeUTF(info);
19         dos.writeBoolean(good);
20         
21         dos.close();
22         fos.close();
23     }
24 
25    @Test
26     public void test02()throws IOException{
27         FileInputStream fis = new FileInputStream("data.dat");
28         DataInputStream dis = new DataInputStream(fis);
29         
30         int num = dis.readInt();
31         char c = dis.readChar();
32         double d = dis.readDouble();
33         String s = dis.readUTF();
34         boolean b = dis.readBoolean();
35         
36         System.out.println(num);
37         System.out.println(c);
38         System.out.println(d);
39         System.out.println(s);
40         System.out.println(b);
41         
42         dis.close();
43         fis.close();
44     }

 

以上是关于java中DataInputStream如何读取我们控制台的字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 BufferedReader 读取 DataInputStream 中的内容

Java 之 数据IO流-DataInputStream

IO流之DataInputStream/DataOutputStream

DataInputStream和DataOutputStream

java中,DataInputStream和 FileInputStream有啥区别和联系?怎么转换?

JAVA IO操作:数据操作流:DataOutputStream和DataInputStream