所选项目名称:文本替换      结对人:傅艺伟

github地址 : https://github.com/quchengyu/jiedui/tree/quchengyu-patch-1

用一个新字符串替换文本文件中所有出现每个字符串的地方。文件名和字符串都作为命令行参数进行传递。给出相应的测试文件和测试字符串。

项目设计方案

       一起选定项目敲定大体结构后,我写的代码,搭档负责测试和修改。

首先,需要定义一个命令把文本文档读入内存,并进行异常处理;然后定义一个写数据流,以便于替换;最后将内存中修改后的内容写入文本文档。替换文本中的字符串用     cont = cont.replaceAll("private", "public");可替换全部字符串。

核心算法详细设计

  1. 1.         读数据流

public static String read(File src)

{  StringBuffer res = new StringBuffer();

String line = null;

try

{   BufferedReader reader = new BufferedReader(new FileReader(src));

while ((line = reader.readLine()) != null)

{

res.append(line + "\n");

}

reader.close();

}

定义一个数据流src,定义一个变量line用于存储文件内容,初始为空。读时最好一行一行的读,读一行向内存中写一行,如,

while ((line = reader.readLine()) != null)

{

res.append(line + "\n");

}

  1. 2.  写数据流

同读数据流一样定义一个disk,再定义一个变量cont存储操作值,最后刷新文件,关闭文件。

  1. 3.  异常处理

因为会出现如文件不存在等异常,需要定义异常处理,如,

catch (FileNotFoundException e)

{   e.printStackTrace();  }

catch (IOException e)

{   e.printStackTrace();  }

return res.toString(); }

完整源码

完整源码:给出完整的源代码。如:

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 StringRpl {

public static String read(File src)

{  StringBuffer res = new StringBuffer();

String line = null;

try

{   BufferedReader reader = new BufferedReader(new FileReader(src));

while ((line = reader.readLine()) != null)

{

res.append(line + "\n");

}

reader.close();

}

catch (FileNotFoundException e)

{   e.printStackTrace();  }

catch (IOException e)

{   e.printStackTrace();  }

return res.toString(); }

public static boolean write(String cont, File dist)

{

try

{

BufferedWriter writer = new BufferedWriter(new FileWriter(dist));

writer.write(cont);

writer.flush();

writer.close();

return true;

}

catch (IOException e)

{

e.printStackTrace();

return false;

}

}

/*public StringRpl()

{

}*/

public static void main(String[] args)

{  File src = new File("a.txt");

String cont = StringRpl.read(src);

System.out.println(cont);

//对得到的内容进行处理

cont = cont.replaceAll("private", "public");

System.out.println(cont);  //更新源文件

System.out.println(StringRpl.write(cont, src));

}

}

使用说明与运行结果截图

使用说明:a.txt必须在工作区文件夹下。

运行结果截:运行前a.txt的样式。

运行成功后:

对文本文件的操作,读写数据都要存在,当读的文件较大时数分配的内存必须足够。

心得体会

      这次结对任务锻炼了我们的配合,其实这个程序很简单,两个人做有点分不开,所以在一起商量好项目和大体结构后我就自己写完了代码,然后让他

调试、修改。

结对项目 https://github.com/quchengyu/jiedui/tree/quchengyu-patch-1的更多相关文章

  1. 结对项目https://github.com/bxoing1994/test/blob/master/源代码

    所选项目名称:文本替换      结对人:曲承玉 github地址 :https://github.com/bxoing1994/test/blob/master/源代码 结对人github地址:ht ...

  2. go语言的一个gui 开源 项目 https://github.com/andlabs/ui

    go语言的一个gui 开源 项目  https://github.com/andlabs/ui 1 安装  mingw-w64  链接地址: http://mingw-w64.sourceforge. ...

  3. 结对项目junit测试用例

    题目:我们假设我们要写一个整数除法的类,并且给他写测试用例. 结对分工:滕娟负责写代码,搜集资料,整理,潘广玫负责进行测试,处理测试结果 github地址链接: https://github.com/ ...

  4. 结对项目-四则运算"软件"之升级版

    本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213 github地址为:https://github.com/L ...

  5. 201871030138-杨蕊媛 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-daizh ...

  6. git推送项目到github并使用gitee做镜像仓库

    2022最新版github入门教程,教你如何一步步创建自己的github账号并初始化仓库,然后使用git工具配置个人工作环境.配合gitee仓库,作为github的镜像仓库使用.这篇文章很基础,对萌新 ...

  7. [伟哥开源项目基金会](https://github.com/AspNetCoreFoundation)

    伟哥开源项目基金会 GitHub_base=> 伟哥开源项目基金会 该项目作者为伟哥,GitHub地址:https://github.com/amh1979: 该项目维护者为鸟窝,GitHub地 ...

  8. 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件项目的托管平台:https://github.com/zlslch/)(图文详解)(博主推荐)

    不多说,直接上干货! https://github.com/ 欢迎大家,加入我的微信公众号:大数据躺过的坑        人工智能躺过的坑       同时,大家可以关注我的个人博客:    http ...

  9. 【错误】上传新的项目出错 error: failed to push some refs to 'https://github.com/...

    问题描述:在git bash中键入 $ git push origin master 进行提交的时候出现 如下错误: error: failed to push some refs to 'https ...

随机推荐

  1. 为什么MySQL数据库索引选择使用B+树?

    在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使 ...

  2. 【BZOJ2159】Crash的文明世界

    [2011集训贾志鹏]Crash的文明世界 Description Crash小朋友最近迷上了一款游戏--文明5(Civilization V).在这个游戏中,玩家可以建立和发展自己的国家,通过外交和 ...

  3. swift的类型描述符

    Metatype Types A concrete or existential metatype in SIL must describe its representation. This can ...

  4. A - I Think I Need a Houseboat HDU - 1065(水题)

    题意:给你一个半圆,半圆以面积每年增加50平方英里的速度扩张.问(x, y)在多少年后被覆盖. 思路:emmm,其实最开始,还是打表的,因为每一年的半圆的半径可以算出来.啊啊啊啊,其实这个方法是可以的 ...

  5. 0 vs工程添加sdk

    配置64位 库目录:(VC++目录) 可选配置 VS SDK(如果报错缺少kernel32.lib) C:\Program Files (x86)\Microsoft SDKs\Windows\v7. ...

  6. 什么是CSS盒模型及利用CSS对HTML元素进行定位的实现(含h5/css3新增属性)

    大家好,很高兴又跟大家见面了!本周更新博主将给大家带来更精彩的HTML5技术分享,通过本周的学习,可实现大部分的网页制作.以下为本次更新内容. 第四章 css盒模型 <!DOCTYPE html ...

  7. metamask源码学习-background.js

    这个就是浏览器后台所进行操作的地方了,它就是页面也区块链进行交互的中间部分. metamask-background描述了为web扩展单例的文件app/scripts/background.js.该上 ...

  8. python3 小数据池

    '''小数据池:为了重复的使用同一个数据str(一般的,简单的)int -5~256bool True False3个数据类型会被放入小数据池id()取变量的内存地址字符串'''# s1 = &quo ...

  9. gitlab--ci文件

    1.when: manual  手动执行(加到哪个脚本中,哪个就会变成手动执行)

  10. 类似Visual Studio一样,使用Qt Creator管理多个项目,创建子项目

    1. 简介 QtCreator是一个十分好用的跨平台IDE,由于最近需要在Windows和Mac同时写一个C++的代码,使用VS和XCode不能实现项目的统一管理(可以使用cmake来组织源码,但是每 ...