三组数据如下:

{19.99 , 9.99 , 15.99 , 3.99 , 4.99}

{12 , 8 , 13 ,29 ,50}

{"Java T-shirt" , "Java Mug" , "Duke Juggling Dolls" , "Java Pin" , "Java Key Chain"}

主要考查难点就是题目限制了只能用这两个类.

由于数据是三个不同类型的数组,而DataInputStream的读取方法都一次只能读取一个,像这种数组就得另想办法.

 import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出*/
public class Test3_2 {
public static void main(String[] args) throws IOException{
File f= new File("d:\\test.txt");
FileOutputStream fos=new FileOutputStream(f);
DataOutputStream dos=new DataOutputStream(fos);
FileInputStream fis=new FileInputStream(f);
DataInputStream dis=new DataInputStream(fis);
double[] d={19.99,9.99,15.99,3.99,4.99};
int[] in={12,8,13,29,50};
String[] s={"Java T-shirt","Java Mug","Duke Juggling Dolls","Java Pin","Java Key Chain"}; double d1[]=new double[5];
int i1[]=new int[5];
String s1[]=new String[5];//用于显示到控制台时控制输出 for(int i=0;i<5;i++){
dos.writeDouble(d[i]);
dos.writeInt(in[i]);
dos.writeUTF(s[i]);
}//写入到文件
fos.close();
dos.close();//关闭流
for(int i=0;i<5;i++){
d1[i]=dis.readDouble();
i1[i]=dis.readInt();
s1[i]=dis.readUTF();
}//从文件中读取,因为DataInputStream只有这种方法,依次只能读一个,所以依次存放到数组中
for(int i=0;i<5;i++)
System.out.print(d1[i]+" ");
System.out.println();
for(int i=0;i<5;i++)
System.out.print(i1[i]+" ");
System.out.println();
for(int i=0;i<5;i++)
System.out.print(s1[i]+" ");
System.out.println();//控制输出格式 }
}

可能是文件写入那一部分让我形成了惯性思维.因为它是以数组依次循环读入,所以我希望最好可以以数组的形式依次循环读出.

而如上所述,在题目所限制的类中没有这种方法.

既然只有一次只能读一个的方法,所以我想它每读取一个,我就把它放到数组中再print出来.

另外,字符串数组的读取,遇到了麻烦,我百度了一个方法,如下:

 char c;
while((c=inDat.readChar())!='\0'){
System.out.print("读出成功");
}

一度想把char强制转换为String????终究发现行不通

那用readUTF()方法,但是莫名其妙的有问题,我也不知道问题在哪儿,直到我看到DataOutputStream类的writeUTF方法,突然想到或许可以与其配对使用,而之前智障的我读取字符串时使用的是writeChars方法,从而导致读写时对文件的编码不一致.运行时总是乱码

将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出的更多相关文章

  1. java下DataInputStream与DataOutputStream写入数据的同时写入数据类型

    package cn.stat.p2.demo; import java.io.DataInputStream; import java.io.DataOutputStream; import jav ...

  2. 为GCD队列绑定NSObject类型上下文数据-利用__bridge_retained(transfer)转移内存管理权-备

    下面评论的好友“@Jim”给了种新的思路,就是在清除context的函数里面,用“_bridge_transfer”转换context,把context的内存管理权限重新交给ARC,这样,就不用显式调 ...

  3. Java -> 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)

    写入:没有关闭流,容错并不完善. private void insertFile(HttpServletRequest request, HttpServletResponse response) t ...

  4. 【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中

    package com.sxd.test.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java ...

  5. Python文件处理之文件写入方式与写缓存(三)

    Python的open的写入方式有: write(str):将str写入文件 writelines(sequence of strings):写多行到文件,参数为可迭代对象 首先来看下writelin ...

  6. PBOC金融IC卡,卡片与终端交互的13个步骤,简介-第三组

    七:终端风险管理-必选但包含可选步骤异常文件:终端检查应用主账号是否在异常文件列表(卡号黑名单)中.商户强制联机:商户可以将当前交易强制为联机处理.最低限额:控制交易当前交易金额或同一张卡片连续几笔交 ...

  7. select、poll、epoll三组IO复用

    int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,struct timeval* timeout)//其中n ...

  8. 向mysql中插入Date类型的数据

    先看数据库表的定义 date字段为sql.date类型.我要向其中插入指定的日期和当前日期. 一.插入当前日期 思路:先获取当前系统,在将当前系统时间转换成sql类型的时间,然后插入数据库.代码如下 ...

  9. SQL SERVER2005 的三种复制类型概述

    一.事务复制 事务性复制通常从发布数据库对象和数据的快照开始.创建了初始快照后,接着在发布服务器上所做的数据更改和架构修改通常在修改发生时(几乎实时)便传递给订阅服务器.数据更改将按照其在发布服务器上 ...

随机推荐

  1. SpringBoot -- 计划任务

    从Spring 3.1 开始,计划任务在Spring中的实现变得异常的简单.首先通过在配置类注解@EnableScheduling 来开启对计划任务的支持,然后再执行集合任务的方法上注解@Schedu ...

  2. LOJ2522:[FJOI2018]邮递员问题(乱搞)

    传送门 乱搞. 可以发现如果起点在左边界,终点在右边界的时候上下走的点一定是连续的(可能吧) 那么可以设 \(f_{i,j,0/1}\) 表示当前上面到 \(i\),下面到 \(j\),当前在上面/下 ...

  3. 前端hash路由基本原理,及代码的基本实现

    路由就是指随着浏览器地址栏的变化,展示给用户的页面也不相同. 早期的路由都是后端实现的,直接根据 url 来 reload 页面,页面变得越来越复杂服务器端压力变大,随着 ajax 的出现,页面实现非 ...

  4. AJAX的基本操作

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和 ...

  5. Asp.net MVC检测到有潜在危险的 Request.Form 值

    解决方法很简单,不像网上说的那么麻烦.只需一步: [ValidateInput(false)] public ActionResult Test(){ }

  6. Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  7. 简单的分页小demo

    public class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Sy ...

  8. 基于MD5的增强型摘要算法

    message-digest algorithm 5(信息-摘要算法),md5的长度,默认为128bit,也就是128个0和1的二进制串.但是,这样表达是很不友好的,所以将二进制转成了16进制,每4个 ...

  9. Azure 虚拟机诊断设置问题排查

    Azure 为用户提供了可以自己配置的性能监控功能:Azure 诊断扩展.但是在具体配置中,经常会遇到各种各样的问题.不了解监控的工作机制常常给排查带来一定难度.这里我们整理了关于 Azure 虚拟机 ...

  10. RBAC用户角色权限设计方案【转载】

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...