返回顶部
首页 > 资讯 > 精选 >Java的DataInputStream和DataOutputStream怎么使用
  • 882
分享到

Java的DataInputStream和DataOutputStream怎么使用

2023-06-30 16:06:55 882人浏览 安东尼
摘要

本篇内容主要讲解“Java的DatainputStream和DataOutputStream怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的DataInputStream和Dat

本篇内容主要讲解“Java的DatainputStream和DataOutputStream怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的DataInputStream和DataOutputStream怎么使用”吧!

简介

io 包中,提供了两个与平台无关的数据操作流:数据输出流(DataOutputStream)、数据输入流 (DataInputStream)。

通常数据输出流会按照一定的格式将数据输出,再通过数据输入流按照一定的格式将数据读入。DataOutputStream 和 DataOutputStream 用来读写固定字节格式数据。

DataOutputStream

创建对象

DataOutputStream out = new DataOutputStream(相接的流)

方法将一个 int 类型的数据写到数据输出流中,底层将 4 个字节写到基础输出流中

writeInt(int i)

将一个 double 类型的数据写到数据输出流中,底层会将 double 转换成 long 类型,写到基础输出流中,输出8个字节

writeDouble(double d)

以机器无关的方式使用 utf-8 编码方式将字符串写到基础输出流中。先输出 2 个字节表示字符串的字节长度,再输出这些字节值

writeUTF()

DataInputStream

创建对象

DataInputStream dis = new DataInputStream(InputStream in);

方法从数据输入流中读取一个 int 类型数据,读取 4 个字节

readInt()

读取8个字节

readDouble()

先读取 2 个字节来确定字符串的字节长度,再读取这些字节值

readUTF()

Tips:读取结束,再读取会出现EOFException

栗子1:写入数据

public class Main {    public static void main(String[] args) throws Exception {        DataOutputStream out = new DataOutputStream(new FileOutputStream("d:/abc/f5"));        out.writeInt(20211011);        out.writeUTF("晴,18度");        out.writeInt(20211012);        out.writeUTF("晴,19度");        out.writeInt(20211013);        out.writeUTF("多云,17度");        out.close();    }}

运行结果:

Java的DataInputStream和DataOutputStream怎么使用

栗子2:读取

public class Main {    public static void main(String[] args) throws Exception {        DataInputStream in = new DataInputStream(new FileInputStream("d:/abc/f5"));        try {            while (true) {                int date = in.readInt();                String s = in.readUTF();                System.out.println(date);                System.out.println(s);            }        } catch (EOFException e) {            //正确读取结束,不需要处理        }        in.close();    }}

运行结果:

Java的DataInputStream和DataOutputStream怎么使用

栗子3:保存学生信息

要求用如下格式保存学生信息

学号 00 00 00 01
姓名 00 03 61 62 63
性别 00 61
年龄 00 00 00 16

xml

<LinearLayout xmlns:Android="Http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:padding="20dp">    <EditText        android:id="@+id/et1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="学号" />    <EditText        android:id="@+id/et2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="姓名" />    <EditText        android:id="@+id/et3"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="性别" />    <EditText        android:id="@+id/et4"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="年龄" />    <Button        android:id="@+id/btn1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="保存" />    <Button        android:id="@+id/btn2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="读取" />    <TextView        android:id="@+id/tv"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="10dp" /></LinearLayout>

java

public class IoActivity extends AppCompatActivity {    private EditText et1;    private EditText et2;    private EditText et3;    private EditText et4;    private Button btn1;    private Button btn2;    private TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_io);        setViews();        setListeners();    }    private void setViews() {        et1 = findViewById(R.id.et1);        et2 = findViewById(R.id.et2);        et3 = findViewById(R.id.et3);        et4 = findViewById(R.id.et4);        btn1 = findViewById(R.id.btn1);        btn2 = findViewById(R.id.btn2);        tv = findViewById(R.id.tv);    }    private void setListeners() {        btn1.setOnClickListener(view -> baocun());        btn2.setOnClickListener(view -> duqu());    }    private void baocun() {        //IO操作有IO异常,所以进行try...catch...                try {            int id = Integer.parseInt(et1.getText().toString());            String name = et2.getText().toString();            String gender = et3.getText().toString();            int age = Integer.parseInt(et4.getText().toString());            DataOutputStream out = new DataOutputStream(                    new FileOutputStream(getExternalFilesDir(null) + "/stu.txt", true)            );            out.writeInt(id);            out.writeUTF(name);            out.writeChar(gender.charAt(0));            out.writeInt(age);            out.close();            Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();        } catch (Exception e) {            Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();            e.printStackTrace();        }    }    private void duqu() {        //IO操作有IO异常,所以进行try...catch...        try {            DataInputStream in = new DataInputStream(                    new FileInputStream(getExternalFilesDir(null) + "/stu.txt")            );            try {                tv.setText("");                while (true) {                    int id = in.readInt();                    String name = in.readUTF();                    char gender = in.readChar();                    int age = in.readInt();                    tv.append("id:" + id + "\n" + "name:" + name + "\n" + "gender:" + gender + "\n" + "age:" + age + "\n");                }            } catch (EOFException e) {            }            in.close();            Toast.makeText(this, "读取成功", Toast.LENGTH_SHORT).show();        } catch (Exception e) {            Toast.makeText(this, "读取失败", Toast.LENGTH_SHORT).show();            e.printStackTrace();        }    }}

运行程序:

Java的DataInputStream和DataOutputStream怎么使用

点击读取按钮:

Java的DataInputStream和DataOutputStream怎么使用

其中getExternalFilesDir(null)得到以下路径

/storage/emulated/0/Android/data/yourPackageName/files

这个目录会在应用被卸载的时候删除,而且访问这个目录不需要动态申请STORAGE 权限。

所以运行程序会在这个路径下生成一个 stu.txt 的文件

到此,相信大家对“Java的DataInputStream和DataOutputStream怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Java的DataInputStream和DataOutputStream怎么使用

本文链接: https://lsjlt.com/news/330258.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java的DataInputStream和DataOutputStream怎么使用
    本篇内容主要讲解“Java的DataInputStream和DataOutputStream怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的DataInputStream和Dat...
    99+
    2023-06-30
  • Java中DataInputStream和DataOutputStream的使用方法
    目录简介DataOutputStreamDataInputStream栗子1:写入数据栗子2:读取栗子3:保存学生信息简介 在 io 包中,提供了两个与平台无关的数据操作流:数据输出...
    99+
    2024-04-02
  • java datainputstream流怎么用
    DataInputStream类是用来从输入流中读取基本类型数据的,你可以按照以下步骤使用DataInputStream流: 创建...
    99+
    2024-02-29
    java
  • java中怎么用datainputstream读取字符串
    在Java中,您可以使用DataInputStream的readUTF()方法来读取字符串。下面是一个示例代码: import ja...
    99+
    2023-10-26
    java
  • 怎么使用Java中的abstract和interface
    本篇内容介绍了“怎么使用Java中的abstract和interface”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、简介abstrac...
    99+
    2023-06-25
  • java中的sleep和wait怎么使用
    在Java中,sleep和wait都是用来控制线程的方法,但用途和使用方式有所不同。1. sleep方法:- sleep是Threa...
    99+
    2023-08-11
    java sleep wait
  • 怎么使用Java try和catch
    本篇内容介绍了“怎么使用Java try和catch”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  尽管...
    99+
    2024-04-02
  • cmd怎么使用javac和java
    这篇文章主要介绍了cmd怎么使用javac和java,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、简述:cmd中,执行java命令与javac命令的区别:javac:是编...
    99+
    2023-06-22
  • Java的贪心和枚举怎么使用
    今天小编给大家分享一下Java的贪心和枚举怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。笔试技巧:学会根据数据范围猜...
    99+
    2023-06-29
  • Java集合的Queue和LinkedList怎么使用
    这篇文章主要讲解了“Java集合的Queue和LinkedList怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java集合的Queue和LinkedList怎么使用”吧!Linke...
    99+
    2023-06-02
  • Java中ByteArrayInputStream和ByteArrayOutputStream怎么使用
    这篇“Java中ByteArrayInputStream和ByteArrayOutputStream怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所...
    99+
    2023-07-02
  • Java Files和Paths怎么使用demo
    这篇文章主要讲解了“Java Files和Paths怎么使用demo”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java Files和Paths怎么使用demo”吧!前...
    99+
    2023-07-05
  • Java中Comparable和Comparator怎么使用
    这篇文章主要讲解了“Java中Comparable和Comparator怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中Comparable和Comparator怎么使用”吧...
    99+
    2023-07-05
  • Java中StringRedisTemplate和RedisTemplate怎么使用
    这篇文章主要介绍“Java中StringRedisTemplate和RedisTemplate怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java中StringRedisTemplate和...
    99+
    2023-07-06
  • java中pattern和matcher怎么使用
    在Java中,Pattern和Matcher是java.util.regex包中的类,用于处理正则表达式的匹配和搜索操作。 首先,我...
    99+
    2024-04-02
  • Java中的注解和反射怎么使用
    这篇文章主要讲解了“Java中的注解和反射怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的注解和反射怎么使用”吧!1、注解(Annotation)1.1 什么是注解(Ann...
    99+
    2023-07-02
  • Java中的Stringbuild,Date和Calendar类怎么使用
    本篇内容介绍了“Java中的Stringbuild,Date和Calendar类怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Str...
    99+
    2023-07-05
  • java怎么创建和使用组件
    在Java中,可以使用Swing或JavaFX来创建和使用组件。下面是一些常见的创建和使用组件的方法:1. 创建组件:- 使用Swi...
    99+
    2023-10-10
    java
  • java注解和反射怎么使用
    Java注解和反射是Java编程中非常重要的概念。注解是一种元数据,可以用来为Java程序提供额外的信息,而反射则允许程序在运行时动...
    99+
    2023-05-29
    java注解和反射 java
  • Vector和Stack怎么在JAVA 中使用
    这篇文章将为大家详细讲解有关Vector和Stack怎么在JAVA 中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、Vector&Stack的基本介绍和使用我们先看下JDK种...
    99+
    2023-05-30
    java vector stack
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作