Java I/O流实例之简历替换

目录
  • 学习内容
  • 内容管理
    • java文件I/O实例----生成报表
  • 总结

学习内容

Java I/O 项目案例

内容管理

java文件I/O实例----生成报表

我们之前学习了两个重要的模块,一个就是Java I/O 另外一个就是java的界面编程,界面编程我们已经实践过了,但是I/O流还没有实践过呢,所以接下来将做一个小项目就是打印报表

需求描述

假设有一个简历模板文件,比如resume.template, 文件内容如下

我的名字是(name)
我毕业院校是(schoolName)
我的所学专业是(major)

要求:根据模板文件,生成新的文件,并替换源文件模板中的指定信息,如生成新的报表文件如下

我的名字是Echo

我毕业院校是 T大

我的所学专业是 CS

那我们怎么实现这个功能呢,我们首先要从指定文件中读取信息,之后替换之后我们又要采用写的方式将新生成的信息放入到我们的新创建的文件中去。

那我们先来初步编辑一下

程序源码(详解版)

package Luogu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class PrintResume {//我们的程序分为几部分
	static BufferedReader brFile = null;
	static BufferedWriter bwFile = null;
	//第一步:读取模板文件的内容
	/*
	 * 这里是读取文档,是读取的文本文件,并且有多行,所以
	 * 我们采用字符流的方式,并且使用BufferedReader
	 * 里面的readFile方法非常方便,读取效率很高
	 * 这里是decorator模式,所以我们的装饰器是都可以装饰
	 * 这里我们查询文件可以通过文件路径的方式
	 * 这里之前没有提到,就是介质流中的文件流中要传入一个File型的对象,这里就是我们需创建对象
	 */
	public static void main(String[] args) {
		try {
			brFile = new BufferedReader(new FileReader(new File("D:\\\\Java项目\\\\Luogu\\resume.template.txt")));//最里面一定是介质流,加上路径
			String line = null;//每行的内容
			String load = null;//储存我们的文件
			//try {可以不用多次选中
				while((line = brFile.readLine()) != null)
				{
					load = load + line;
				}
		//第二步:替换文件中特定的信息
				load.replace("(name)", "Echo").replace("(schoolName)", "T大").replace("(major)", "CS");//这里直接使用的是字符串的替换方法,可以连续使用
		//第三步:将新的信息输出到指定文件中
				File file = new File("D:\\\\Java项目\\\\Luogu\\new.resum.txt");
				bwFile = new BufferedWriter(new FileWriter(file));
				bwFile.write(load);
		}catch(FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}finally {//try里面的语句是局部变量在finally里不可见
				try {
					bwFile.close();
					brFile.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
	}
}

这里我们运行就发现了一个问题,文件是生成了,但是我们点开文件发现出现了乱码

null鎴戠殑鍚嶅瓧鏄?: (name)鎴戞瘯涓氶櫌鏍℃槸: (schoolName)鎴戠殑鎵?瀛︿笓涓氭槸: (major)

出现这种问题是为什么呢,你可以先想一想,节下来我就要解决这个问题了

问题出现的原因

出现这种问题就是就是因为我们这里将源文件的类型定义的.template,我们将其改成txt文件

就是源文件为resume.txt; 新文件是newResume.txt

所以问题就是我们最开始创建时编码格式为UTF-8;但是我们的字符串只能识别ASCLL,这里我们光改名字是不能达到目的的,我们还要通过另存源文件为ASCLL编码类型才可以

这样之后输出的结果为

null我的名字是: (name)我毕业院校是: (schoolName)我的所学专业是: (major)

但是这里还是有问题,就是我们这里没有实现换行,并且信息没有替换掉,最前面多了一个null;

  • 这个null是怎么回事,这是因为我们的字符串是拼接成的,但是最开始有个初值为null,所以这里就会打印出了一个null

    • 方法: 将字符串定义为"" 就好了,不是空,是空串
  • 为什么没有换行,这里是因为我把每行的字符串给了line,之后又直接拼接到了load上,所以没有换行符
    • 每读完一行加一个“\r\n”;
  • 那为什么没有实现字符的替换呢?这里就涉及到我们之前分享的对字符串的所有字符串都不会改变源字符串的内容,而是生成一个新的字符串
    • 那我们就将修改后的字符串赋给源字符串就好,注意这里只是赋予管理权 load = load.replace(); 输出了正确结果

我的名字是: Echo
我毕业院校是: T大
我的所学专业是: CS

总结

我们今天分享的主要内容就是一个案例的分享,IO是一个非常重要的部分,一定要掌握扎实,这里出现的四个问题一定要明确它们的解决办法

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • java基础知识I/O流使用详解

    "流"概念源于UNIX中的管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等,它屏蔽了实际的I/O设备中处理数据的细节.   一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL. 流的方向是重要的,根据流的方向,流可以分为两类:输入流和输出流.其实输入/输出是想对于内存来说的.实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对于输入流,可不必

  • Java使用I/O流读取文件内容的方法详解

    本文实例讲述了Java使用I/O流读取文件内容的方法.分享给大家供大家参考,具体如下: 要利用I/O流读取文件内容,首先要掌握InputStream的体系结构. 这个体系中FileInputStream和BufferedInputStream是一定要掌握的,因为使用的频率比较高. InputStream的方法:InputStream位于java.io包下 OutputStream的方法: 读取文件(代码): package com.jredu.oopch11; import java.io.Fi

  • Java I/O中I/O流的典型使用方式详解

    前言 尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合.下面的例子可以作为典型的IO用法的基本参考.在这些示例中,异常处理都被简化为将异常传递给控制台,但是这只有在小型示例和工具中才适用.在代码中,你需要考虑更加复杂的错误处理方式. 同样,本文会包括如下几个方面: 缓冲输入文件 从内存输入 格式化的内存输入 基本的文件输出 存储和恢复数据 读写随机访问文件 实用工具 总结 1. 缓冲输入文件 如果想要打开一个文件用于字符输入,可以使用以String或File对象作为文件名的

  • Java实战之基于I/O流设计的图书管理系统

    一.前言 当前,我还没有学到数据库相关的知识,想要完全通过Java来完成一个可以存储数据的图书馆管理系统就只能使用I/O流的知识,将内容都保存到文件中,再进行增删改查的操作,这就很考验我们的Java基础知识掌握能力. 二.项目介绍 Java基本语法的掌握 流程控制语句的熟练使用 面向对象思想的理解 能否熟练使用封装.继承.多态 接口.异常的熟悉 集合的使用 是否熟悉掌握I/O流相关操作 三.项目说明 传统的人工管理图书馆流程繁琐,我们需求设计一个图书馆管理系统来方便学生借书以及管理员管理书籍 系

  • Java I/O流实例之简历替换

    目录 学习内容 内容管理 java文件I/O实例----生成报表 总结 学习内容 Java I/O 项目案例 内容管理 java文件I/O实例----生成报表 我们之前学习了两个重要的模块,一个就是Java I/O 另外一个就是java的界面编程,界面编程我们已经实践过了,但是I/O流还没有实践过呢,所以接下来将做一个小项目就是打印报表 需求描述 假设有一个简历模板文件,比如resume.template, 文件内容如下 我的名字是(name) 我毕业院校是(schoolName) 我的所学专业

  • Java中IO流文件读取、写入和复制的实例

    //构造文件File类 File f=new File(fileName); //判断是否为目录 f.isDirectory(); //获取目录下的文件名 String[] fileName=f.list(); //获取目录下的文件 File[] files=f.listFiles(); 1.Java怎么读取文件 package com.yyb.file; import java.io.File; import java.io.FileInputStream; import java.io.In

  • Java中IO流 字节流实例详解

    Java中IO流 字节流实例详解 IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络-),即是将数据源读入到程序的通信通道. 输出流:程序向输出流写入数据.将程序中的数据输出到外界(显示器.打印机.文件.网络-)的通信通道. 字节流 1.InputStream.OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据

  • Java中IO流 RandomAccessFile类实例详解

    Java中IO流 RandomAccessFile类实例详解 RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文

  • Java中io流解析及代码实例

    IO流 Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的:常用的文件读取用的就是字符流,在网络通信里面用的就是字节流 下面这张图是Java中IO流的总体框架: 字节流 Java中字节流一般都是以stream结尾的,输入的字节流叫InputStream,输出字节流叫OutputStream;InputStream和OutputStream是表示自己输入/输出的所有类的超类,是抽象类(abstract) 常用的字节流有: 1.FileInp

  • Java对象流实例代码

    将日期对象和向量对象写入文件,然后从文件中读出并输出到屏幕上 package objstream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io

  • Java实现inputstream流的复制代码实例

    这篇文章主要介绍了Java实现inputstream流的复制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 获取到一个inputstream后,可能要多次利用它进行read的操作.由于流读过一次就不能再读了,而InputStream对象本身不能复制,而且它也没有实现Cloneable接口,所以得想点办法. 实现思路: 1.先把InputStream转化成ByteArrayOutputStream 2.后面要使用InputStream对象

  • Java字符串格式化,{}占位符根据名字替换实例

    我就废话不多说了,大家还是直接看代码吧~ import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringFormatUtil { private static

  • java使用IO流对数组排序实例讲解

    在学会了java中io流的使用后,我们对于数组的排序,又多了一种使用方法.大家知道流处理数据的效率是比较理想的,那么在具体操作数组排序上,很多人对于排序的方法还没有明确.下面我们先java使用流对数组排序的思路为大家进行梳理,然后带来对应的实例代码方法. 1.排序思路 (1)从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取 (2)询问用户需要多少位数的数组 (3)转换为数字类型 (4)将用户输入数字存入数组 (5)把数组按排序需求并打印出来 2.实例 public stat

  • Java 使用IO流实现大文件的分割与合并实例详解

    Java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时候就可以把这个文件切割成3个1G的文件 ,分开复制, 最后把三个文件合并, 这样就解决问题了 :再比如说, 你有一个上百M的文件要上传到FTP ,但是这个FTP限制你单个文件不能超过10M 这时候也可以用文件分割的办法解决问题.既然分割了,那么在我们再次使用的时候就需要合并了,今天我们就通过Java

随机推荐