IO流练习(三)

news2024/11/24 2:02:47

1.编程题 Homework01.java

(1)在判断e盘下是否有文件夹mytemp,如果没有就创建mytemp

(2)在e:\\mytemp目录下,创建文件hello.txt

(3)如果hello.txt已经存在,提示该文件已经存在,就不要再重复创建了。

(4)并且在hello.txt文件中,写入hello,world~.

我们设计的代码如下所示:

package com.rgf.work;

import java.io.*;

public class Homework01 {
    public static void main(String[] args) throws IOException {
            /*
(1)在判断e盘下是否有文件夹mytemp,如果没有就创建mytemp
(2)在e:\\mytemp目录下,创建文件hello.txt
(3)如果hello.txt已经存在,提示该文件已经存在,就不要再重复创建了。
(4)并且在hello.txt文件中,写入hello,world~.
     */
        String directoryPath="e:\\mytemp";
        File file = new File(directoryPath);
        if(!file.exists()) {
            //创建
            if (file.mkdirs()) {
                System.out.println("创建" + directoryPath + "创建成功");
            } else {
                System.out.println("创建" + directoryPath + "创建失败");
            }
        }

        String filePath=directoryPath+"\\hello.txt";  // e:\mytemp\hello.txt
        file = new File(filePath);
        if(!file.exists()) {
            //创建文件
            if (file.createNewFile()) {
                System.out.println(filePath + "创建成功");
                //如果文件存在,我们就使用BufferedWriter字符输入流写入内容
                BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
                bufferedWriter.write("hello,world~~蕾峰编程");
                bufferedWriter.close();
            } else {
                System.out.println(filePath + "创建失败");
            }
        }else {
            //如果文件已经存在,给出提示信息
            System.out.println(filePath+"已经存在,不再重复创建");
        }
      
    }
}

我们运行之后如下所示:

我们打开该路径进行查看:
 

 我们发现我们成功的创建了该文件。

我们再次运行的时候我们发现如下所示:
 

 2.编程题 Homework02.java

要求:使用BufferedReader读取一个文本文件,为每行加上行号,再连同内容一并输出到屏幕上。

我们设计的代码如下所示:

package com.rgf.work;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Homework02 {
    public static void main(String[] args) throws IOException {
        //使用BufferedReader读取一个文本文件,为每行加上行号,再连同内容一并输出到屏幕上。
        String filePath="e:\\b.txt";
        String line="";
        int lineNum=0;
        BufferedReader br = new BufferedReader(new FileReader(filePath));
        while((line=br.readLine())!=null){//循环读取
            System.out.println(++lineNum+line);
        }
        if(br!=null){
            br.close();
        }
    }
}

我们运行之后如下所示:

 如果我们将文件的编码进行修改:

 我们重新运行之后发现如下所示:

我们发现出现了乱码。我们将编码格式从utf-8改为了gbk,出现了中文乱码。

1.默认是按照utf-8处理,开始没有乱码

2.提示:使用我们的转换流,将 FileInputStream ->InputStreamReader【可以指定编码】->BufferedReader.

我们设计的代码如下所示:

package com.rgf.work;

import java.io.*;

public class Homework02 {
    public static void main(String[] args) throws IOException {
        //使用BufferedReader读取一个文本文件,为每行加上行号,再连同内容一并输出到屏幕上。
        String filePath="e:\\b.txt";
        String line="";
        int lineNum=0;
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"gbk"));
        while((line=br.readLine())!=null){//循环读取
            System.out.println(++lineNum+line);
        }
        if(br!=null){
            br.close();
        }
    }
}

 我们运行之后如下所示:

3.编程题Homework03.java

(1)要编写一个dog.properties

name=tom

age=5

color=red

(2)编写Dog类(name,age,color)创建一个dog对象,读取dog.properties用相应的内容完成属性初始化,并输出。

(3)将创建的Dog对象,序列化到文件dog.dat文件

我们设计的代码如下所示:

package com.rgf.work;

import java.io.*;
import java.util.Properties;

public class Homework03 {
    public static void main(String[] args) throws IOException {
        /*
   (1)要编写一个dog.properties
name=tom
age=5
color=red
(2)编写Dog类(name,age,color)创建一个dog对象,读取dog.properties用相应的内容完成属性初始化,并输出。
(3)将创建的Dog对象,序列化到文件dog.dat文件
         */
        //创建Properties对象
        Properties properties = new Properties();
        //在文件中写入要求的内容
        properties.setProperty("name","tom");
        properties.setProperty("age","5");
        properties.setProperty("color","red");
        properties.store(new FileOutputStream("com\\dog.properties"),null);

        String filePath="com\\dog.properties";
        properties.load(new FileReader(filePath));
        properties.list(System.out);
        //读取dog.properties用相应的内容完成属性初始化,并输出。
        String name = properties.get("name")+""; //Object-->String
        String color = properties.get("color") + "";  //Object-->String
        int age =Integer.parseInt(properties.get("age")+"") ; //Object-->int
        Dog dog = new Dog(name,age,color);
        System.out.println("====dog对象信息====");
        System.out.println(dog);
        //将创建的Dog对象,序列化到文件dog.dat文件
        String serFilepath="e:\\dog.dat";
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(serFilepath));
        oos.writeObject(dog);
        //关闭流
        oos.close();
        System.out.println("dog对象,序列化完成...");
    }
}
class  Dog implements Serializable {
    private String name;
    private  int age;
    private String color;

    public Dog(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", color='" + color + '\'' +
                '}';
    }
}

我们运行之后如下所示:

 

我们打开文件进行查看:

 

 我们下来进行编写一个方法进行反序列化:

我们设计的代码如下所示:

 //再编写一个方法,反序列化dog
    @Test
    public void  m1() throws IOException, ClassNotFoundException {
        String serFilepath="e:\\dog.dat";
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(serFilepath));
        Dog dog=(Dog)ois.readObject();
        System.out.println("=====反序列化后 dog ===");
        System.out.println(dog);
        ois.close();
    }
}

我们运行之后如下所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java加解密(八)数字证书

目录数字证书1 定义2 证书组成结构3 公钥基础设施(PKI)3.1 PKI的组成3.2 PKI的相关标准3.3 信任模型4 证书的应用场景5 证书链6 生成证书6.1 通过CA生成可信证书6.1.1 国际权威认证机构6.1.2 生成CSR6.1.2.1 使用XCA生成CSR6.1.2.2 使用OpenSSL生成CSR6.…

每日一题-力扣(leetcode)2059. 转化数字的最小运算数

传送门 题目描述 给你一个下标从 0 开始的整数数组 nums ,该数组由 互不相同 的数字组成。另给你两个整数 start 和 goal 。 整数 x 的值最开始设为 start ,你打算执行一些运算使 x 转化为 goal 。你可以对数字 x 重复执行下述运算: 如果…

AtCoder Beginner Contest 284解题报告(A-D)

A - Sequence of Strings Problem Statement You are given N strings S1​,S2​,…,SN​ in this order. Print SN​,SN−1​,…,S1​ in this order. Constraints 1≤N≤10N is an integer.Si​ is a string of length between 1 and 10, inclusive, consisting of lowe…

【Redis】Redis实现分布式锁

【Redis】Redis实现分布式锁 文章目录【Redis】Redis实现分布式锁1. 分布式锁概念2. 为什么要实现分布式锁2.1 并发安全问题3. 分布式锁的实现方案3.1 Redis实现分布式锁3.1.1 定义分布锁接口和类3.1.2 编写lua脚本3.1.3 使用线程锁3.1.4 总结在实现分布式锁之前,首…

aardio - 升级bindConfig函数,支持多属性和多子组件

一、需求分析 aardio的 winform.bindConfig() 函数,绑定后,一个组件,只能保存一个属性。 有时候需要同时保存多个属性,比如一个comobox组件,需要保存项目列表,同时保存当前选中的项目索引。当前这个bindC…

代码随想录算法训练营第十八天二叉树 java : .106 从中序与后序遍历序列构造二叉树113. 路径总和ii 112 路径总和 513.找树左下角的值

文章目录前言LeetCode 513.找树左下角的值题目讲解思路那么如何找最左边的呢?Leetcode 112 路径总和题目讲解LeetCode 113. 路径总和ii题目讲解Leetcode 106 从中序与后序遍历序列构造二叉树题目讲解前言 人的不幸在于他们不想走自己的那条路,总想走别人…

大数据必学Java基础(一百二十四):Maven的常见插件

文章目录 Maven的常见插件 一、编辑器插件 二、资源拷贝插件 三、tomcat插件 Maven的常见插件

Dubbo 服务暴露

Dubbo 服务暴露 1. 服务暴露时序图 2. 源码分析 DubboBootstrap.exportServices 从配置管理器中获取到所有的ServiceConfig实例,遍历,然后一个一个的暴露。 ServiceConfig.export 如果DubboBootstrap为空,也就没有初始化,就初…

猴子都能看懂的噪声(noise)专题

背景 除了生成各种奇形怪状与自然景观,噪声也有其他美妙的用途! 工作原因,经常接触与噪声相关的画面效果(火焰啊,画面扰动啊之类的),做的时候一知半解,傻傻分不清楚各种形态的nois…

Java文件:XWPFDocument导出Word文档

文章目录一、前言二、基本的概念三、Maven依赖(JAR)四、Word模板1.正文段落2.正文表格3.页眉4.页脚五、XWPFDocument的使用5.4导出Word文档1.word模板2.PdfTest测试类3.ISystemFileService接口4.SystemFileServiceImpl实现类5.结果六、遇到问题5.1输出为word的时候换行符无效一…

NR5G基础概念扫盲

文章目录前言BWP未完待续前言 随着人工智能、万物互联时代的到来,人类社会进入到一个新的阶段。新兴的科技产业对信息社会基础设施提出了更高的要求,对低时延、大带宽、高流量的需求,催生了5G技术,并推动其蓬勃发展。通信&#x…

【深入浅出XML】包装纯粹信息的标记语言

XMLXML的定义和概述🎶XML的定义🎶XML的最好描述🎶HTML和XML的重要区别🎶XML的文档结构🎶其他一些标记XML和优势🎶XML的优势XML解析🎶DOM解析❔解析测试🤞解析步骤🤞案例测…

在Windows部署Java的Jar包

背景 使用 Java 编写了一些有用的工具,因为不方便部署到服务器上,所以需要把 Java 生成的 jar 包在本地 Windows 上部署。 查阅了几种部署方式,认为通过 winsw 进行部署最方便。 安装 winsw 进入 winsw 的下载页面,下载 sampl…

【ROS2 入门】ROS 2 参数服务器(parameters)概述

大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们一起了解ROS 2中Topic, 这一篇,我们主要会围绕ROS中另外一个重要的概念“Parameters ”&am…

图的拓扑排序(AOV网络)

文章目录拓扑排序概念实现邻接表(队列)邻接矩阵(栈)总结源代码邻接表邻接矩阵拓扑排序 概念 拓扑排序是对有向无环图的顶点的一种排序. AOV网络 : 在有向图中, 用顶点表示活动或者任务, 弧表示活动或者任务间的优先关系, 则此有向图称为用顶点表示活动的网络(Activity On Ve…

小程序介绍和注册安装

小程序介绍和注册安装微信小程序介绍小程序特点其它平台小程序注册微信小程序开发帐号获取appidappid简介微信开发者工具安装创建一个小程序项目核心步骤微信开发者工具构成微信小程序介绍 简短定义:微信小程序是运行在微信APP中的一个程序。 常见小程序 行程码拼…

UDS诊断系列介绍11-3E服务

本文框架1. 系列介绍1.1 3E服务概述2. 3E服务请求与应答2.1 3E服务请求2.2 3E服务正响应2.3 3E服务否定响应3. Autosar系列文章快速链接1. 系列介绍 UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是面向整车所有ECU的…

# 【笔记】大话设计模式21-23

【笔记】大话设计模式21-23 文章目录【笔记】大话设计模式21-23单例模式21.1 Example21.2 定义21.3 Show me the code一般单例代码(**懒汉模式**)静态初始化(**饿汉模式**)21.4 总结22 桥接模式22.1 Example22.2 定义22.3 Show me the code22.4 总结23 命…

Code for VeLO 1: Training Versatile Learned Optimizers by Scaling Up

Code for VeLO 1: Training Versatile Learned Optimizers by Scaling Up 这篇文章将介绍一下怎么用VeLO进行训练。 这篇文章基于https://colab.research.google.com/drive/1-ms12IypE-EdDSNjhFMdRdBbMnH94zpH#scrollToRQBACAPQZyB-,将介绍使用learned optimizer in…

入门力扣自学笔记230 C++ (题目编号:2293)

2293. 极大极小游戏 题目: 给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。 对 nums 执行下述算法: 设 n 等于 nums 的长度,如果 n 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums …