Java中DataInputStream的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中DataInputStream的用法相关的知识,希望对你有一定的参考价值。
我要用到DataInputStream从控制台读取一个数据(Java的基本数据类型)然后让它去做算术运算。请问怎么实现。注:用readInt()等方法直接读取的话好像行不通我写了一段代码如下(这只是测试代码):import java.io.*;public class Test public static void main(String[] args) DataInputStream dis=new DataInputStream(System.in); long a=0; try a=readLong(); catch(IOException e) e.printStackTrace(); System.out.println(a); 输入12时 输出的结果是 825362957为什么输入与输出不同?
1、DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后应用程序可以使用数据输入流将数据读入。
2、例子:
/*** 必须先使用DataOutputStream写入数据,然后使用DataInputStream读取数据方可。
*
* @author 徐越
*
*/
public class TestClass
public static void main(String[] args) throws Exception
TestClass t = new TestClass();
t.write();
t.read();
public void write() throws Exception
String path = this.getClass().getClassLoader().getResource("test.txt").toURI().getPath();
OutputStream os = new FileOutputStream(path);
DataOutputStream dos = new DataOutputStream(os);
dos.writeDouble(Math.random());
dos.writeBoolean(true);
dos.writeInt(1000);
dos.writeInt(2000);
dos.flush();
os.close();
dos.close();
public void read() throws Exception
InputStream instream = this.getClass().getClassLoader().getResourceAsStream("test.txt");
DataInputStream dis = new DataInputStream(instream);
double d = dis.readDouble();
boolean b = dis.readBoolean();
// 先写的先被读出来
int i1 = dis.readInt();
int i2 = dis.readInt();
instream.close();
dis.close();
System.out.println(d);
System.out.println(b);
System.out.println(i1);
System.out.println(i2);
输出结果
0.4683893857027681
true
1000
2000
public
static
void
main(String[]
args)
throws
Exception
DataInputStream
dis=new
DataInputStream(new
FileInputStream("d:\\sql.txt"));
File
file=new
File("d:\\sql.txt");
byte[]
bytes=new
byte[(int)file.length()];
dis.read(bytes);
DataOutputStream
dos=new
DataOutputStream(new
FileOutputStream("d:\\kakabak.txt"));
dos.write(bytes);
dos.flush();
dos.close();
dis.close();
参考技术C import java.io.DataInputStream;
import java.io.IOException;public class mains /**
* @param args
*/
public static void main(String[] args)
DataInputStream dis=new DataInputStream(System.in);
String num1="";
String num2="";
try
System.out.println("请输入第一个数字");
num1 = dis.readLine();
System.out.println("请输入第二个数字");
num2 = dis.readLine();
System.out.println("num1+num2="+(Integer.parseInt(num1)+Integer.parseInt(num2)));
System.out.println("num1*num2="+(Integer.parseInt(num1)*Integer.parseInt(num2)));
System.out.println("num1/num2="+(Integer.parseInt(num1)/Integer.parseInt(num2)));
System.out.println("num1-num2="+(Integer.parseInt(num1)-Integer.parseInt(num2)));
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
看看测试结果 参考技术D 为什么不用Scanner呢?DataInputStream好像是输入流吧
类型流DataInputstream 和DataOutputStream的用法
package test; import java.io.*; import java.sql.SQLClientInfoException; import java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.zip.InflaterInputStream; import javax.annotation.processing.FilerException; import javax.management.RuntimeErrorException; import privateclass.Filterby_Name; import privateclass.Filterby_hidden; import privateclass.Filterby_java; import privateclass.MyBufferedReader; import privateclass.Person; public class Main { private static final String space_operator = " "; private static final double pi = Math.PI; private static final String LINE_SEPARATOR = System.getProperty("line.separator"); private static final int SIZE = 1024*1024; public static void main(String[] args) throws Exception { doswrite(); disread(); } public static void disread() throws FileNotFoundException, IOException { DataInputStream dis = new DataInputStream(new FileInputStream("data.txt")); String string = dis.readUTF(); int a = dis.readInt(); System.out.println(string); System.out.println(a); } public static void doswrite() throws FileNotFoundException, IOException { DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.txt")); //这个utf开头会带有标识所以只能用类型流读出 dos.writeUTF("小朋友哥哥给你买糖吃"); dos.writeInt(99); } }
以上是关于Java中DataInputStream的用法的主要内容,如果未能解决你的问题,请参考以下文章
Java中的DataInputStream和DataOutputStream的作用
java中DataInputStream如何读取我们控制台的字符串
java中,DataInputStream和 FileInputStream有啥区别和联系?怎么转换?