专栏首页强仔仔Java中对文件的读写操作

Java中对文件的读写操作

像我们经常会遇到这样的事情,例如一个txt文件中有姓名和电话,这个时候很经常就需要将名字和电话号码进行提取操作,这个时候就可以利用Java中io来实现了。

这里我就不具体介绍io中的字节流和字符流的异同点了,有兴趣的同学可以自己百度百度。

今天主要是介绍一下如何实现对文件内容的获取还有就是对获取的文件内容进行修改操作。下面看具体案例介绍。

这个是案例最终要实现的效果,在姓名和电话号码直接添加分割符号。

这里有一点需要主要的是,这个案例并不是直接在原先的txt文档上面进行修改的,而是新建一个新的txt文件重新写入新的内容。

好了废话不多说,看看这个案例具体是怎么具体实现的。

这个案例分为三个模块:1.文件读取模块,2.姓名电话分离模块,3.文件写入模块

1.文件读取模块:

 /**
     * 功能:Java读取txt文件的内容
     * 步骤:1:先获得文件句柄
     * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
     * 3:读取到输入流后,需要读取生成字节流
     * 4:一行一行的输出。readline()。
     * 备注:需要考虑的是异常情况
     * @param filePath
     */
	public static String readTxtFile(String filePath) {
		StringBuilder content = new StringBuilder("");
		try {
			String encoding = "UTF-8";
			File file = new File(filePath);
			if (file.isFile() && file.exists()) {
				InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);
				BufferedReader bufferedReader = new BufferedReader(read);
				String lineTxt = null;
				while ((lineTxt = bufferedReader.readLine()) != null) {
					String[] result = getNamePhone(lineTxt);
					System.out.println(lineTxt);
					content.append(result[0] + "----" + result[1]);
					content.append("\r\n");// txt换行
				}
				read.close();
			} else {
				System.out.println("找不到指定的文件");
			}
		} catch (Exception e) {
			System.out.println("读取文件内容出错");
			e.printStackTrace();
		}
		return content.toString();
	}

2.姓名电话分离模块:

public static String[] getNamePhone(String str) {
		String[] result = new String[2];
		int index = 0;
		for (int i = 0; i < str.length(); i++) {
			if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
				index = i;
				break;
			}
		}
		result[0] = str.substring(0, index);
		result[1] = str.substring(index);
		return result;
	}

3.文件写入模块:

public static void printFile(String content) {
		BufferedWriter bw = null;
		try {
			File file = new File("D:/filename.txt");
			if (!file.exists()) {
				file.createNewFile();
			}
			FileWriter fw = new FileWriter(file.getAbsoluteFile());
			bw = new BufferedWriter(fw);
			bw.write(content);
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

通过这三个模块就可以实现对文件的读取操作了,然后对信息进行处理,最后将处理好的信息添加到新的文件中去。

这里需要注意的是:项目的编码格式要写成utf-8,否则会出现乱码的情况。

到这里文件的读写操作就完结了,是不是特别简单方便。

如果对上面的内容还有什么疑义或者问题都可以加我QQ:208017534咨询。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 今天给大家介绍一下SpringBoot框架中URL参数如何进行Base64加密解密

    今天给大家介绍一下SpringBoot框架中URL参数如何进行Base64加密解密 首先给大家介绍一下Java中的Base64加密,其实Base64不是真正的加...

    用户1149268
  • SpringBoot JPA 表关联查询

    今天给大家介绍一下如何利用JPA实现表关联查询。 今天给大家举一个一对多的关联查询,并且是使用JPA原生的findBy语句实现的。 例子中总共有两个实体类,一个...

    用户1149268
  • SpringBoot中实现依赖注入功能

    今天给大家介绍一下SpringBoot中是如何实现依赖注入的功能。 在以往Spring使用中,依赖注入一般都是通过在Spring的配置文件中添加bean方法实现...

    用户1149268
  • Java中的读文件,文件的创建,写文件

    大家好,我是 Vic,今天给大家带来Java中的读文件,文件的创建,写文件的概述,希望你们喜欢

    达达前端
  • 【Spark篇】---Spark中transformations算子二

    coalesce常用来减少分区,第二个参数是减少分区的过程中是否产生shuffle。

    LhWorld哥陪你聊算法
  • 网易AI孵化项目获上亿元首轮融资,主打AR+AI

    其孵化的人工智能加持增强现实(AR+AI)创业团队 – 杭州易现先进科技有限公司,今日宣布完成逾亿元人民币首轮融资。

    量子位
  • 彩电行业“四国杀”:未来全行业或只剩四家企业

    如今的彩电行业早已今非昔比,以制造业为主导的野蛮增长期早已过去,市场趋于饱和,增速放缓,行业进入薄利时代,再加上智能电视概念的逐步普及以及乐视、小米、PPTV等...

    曾响铃
  • iOS 根据生日得到生肖,星座,年龄的算法

    王大锤
  • Linux Kernel 4.19敲定为下个长期支持版本

    Linux Kernel开发者和维护总负责人 Greg Kroah-Hartman今天正式敲定,即将发布的4.19分支将会是长期支持版本。目前Linux Ker...

    Debian社区
  • Eclipse连接SQL2008与连接SQL2000代码的不同及连接2008过程中遇到的问题

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/artic...

    魏晓蕾

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动