String :equals()方法是进行内容比较,而不是引用比较。

    “==”比较两个变量本身的值,即两个对象在内存中的首地址。

Scanner :用Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine()。

  next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

  nextLine()方法的结束符只是Enter键。

String[]list<String>的区别:

  String[]:容量是固定的,只能一次获取或设置一个元素的值;可以具有多个维度。

  List<String>:容量可根据需要自动扩充、修改、删除或插入数据;只能有一个维度。

  String[]数组里面是存放String型的,List<String>是存放String类型的对象。特定类型(Object 除外)的数组的性能优于List的性能。 这是因为 List的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近。

import java.util.*;
import java.io.*;
public class Txt{
private static String message = "";
//filePath=""会判断filePath非空!
private static String filePath;
public static void main(String[] args)throws Exception{ System.out.println("~~~~~~~菜单~~~~~~~");
System.out.println("1.新建文件");
System.out.println("2.打开文件");
System.out.println("3.修改文件");
System.out.println("4.保存");
System.out.println("5.退出");
System.out.println("~~~~~~~~~~~~~~~~~~");
//主循环
while(true){
       Scanner scan = new Scanner(System.in); 
System.out.println("请输入操作指令:");
try{
int command = scan.nextInt();
switch(command){
case 1:
createFile();
break;
case 2:
openFile();
break;
case 3:
editFile();
break;
case 4:
saveFile();
break;
case 5:
exit();
break;
default:
System.out.println("指令有误,请重新输入:");
break;
}
}catch(InputMismatchException e){
System.out.println("请输入一个数字哦~"); }
}
}
private static void createFile(){
StringBuffer stb = new StringBuffer();
Scanner scan = new Scanner(System.in);
System.out.println("请输入内容,停止编写请输入“stop”:");
String inputMessage = "";
// 这里不能用==
// String :equals()方法是进行内容比较,而不是引用比较。
//“==”比较两个变量本身的值,即两个对象在内存中的首地址。
while(!(inputMessage.equals("stop"))){
stb.append(inputMessage);
inputMessage = scan.nextLine();
}
//将内容暂存在message里
message = stb.toString();
System.out.println(message);
}
private static void openFile() throws Exception{
Scanner scan = new Scanner(System.in);
System.out.println("请输入要打开的文件名:");
filePath = scan.nextLine();
if((filePath != null) && !(filePath.endsWith(".txt"))){
System.out.println("请输入文本文件!");
return;
}
FileReader fr = new FileReader(filePath);
StringBuffer sb = new StringBuffer();
int in;
char[] charArray = new char[1024];
//此-1非彼-1,这个-1是字节转换成int后得到-1则跳出while,而文本的-1是int转换成字节再转换成int
while((in = fr.read(charArray)) != -1){
sb.append(charArray);
}
//将打开文件的内容暂存在message里
message = sb.toString();
System.out.println("打开文件内容:" + "\r\n" + message);
fr.close();
}
private static void saveFile() throws Exception{
FileWriter fw = null;
if(filePath != null){
fw = new FileWriter(filePath);
}else{
Scanner scan = new Scanner(System.in);
System.out.println("请输入要保存的文件名:");
filePath = scan.nextLine();
//将大写换成小写
if(!filePath.toLowerCase().endsWith(".txt")){
filePath += ".txt";
}
fw = new FileWriter(filePath);
}
System.out.println(message);
fw.write(message);
fw.close();
message = "";
filePath = null;
}
private static void editFile(){
Scanner scan = new Scanner(System.in);
if(filePath == null && message == ""){
System.out.println("请先新建文件或打开文件");
return;
}
String str = "";
System.out.println("请输入要修改的内容(以\"修改的目标文字:修改后的文字\"格式),停止修改输入stop:"); while(!str.equals("stop")){
str = scan.nextLine();
if(str != null && str.length() >0){
String[] editMessage = str.split(":");
if(editMessage != null && editMessage.length >1){
message = message.replace(editMessage[0], editMessage[1]);
}
}
}
}
private static void exit(){
System.out.println("退出喽~");
System.exit(0);
}
}

java——巨简陋文本编辑器的更多相关文章

  1. Java编写的文本编辑器(菜鸟作品)

    //这是主窗体文件 Wordwin.java import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.sw ...

  2. Selenium+java - 关于富文本编辑器的处理

    什么是富文本编辑器? 富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器.具体长啥样,如下图: 通过自动化操作富文本编辑器 模拟场景:在富文 ...

  3. java文本编辑器5

    package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.* ...

  4. java文本编辑器v2.0 图形用户界面

    package 文本编辑器; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; impor ...

  5. 前后端分离ueditor富文本编辑器的使用-Java版本

    最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多j ...

  6. Java实现简易的文本编辑器

    需求分析: 获得文本名称 实现尾部追加功能 实现覆盖式添加数据 删除数据 获取光标位置 在特定光标位置处添加数据 查找特定字符串在主串中第一次出现的位置 统计文本文件内出现的数字,汉字,英文字母,特殊 ...

  7. Java实现"命令式"简易文本编辑器原型

    源自早先想法, 打算从界面方向做些尝试. 找到个简单文本编辑器的实现: Simple Text Editor - Java Tutorials. 原本的菜单/按钮界面如下. 包括基本功能: 新建/打开 ...

  8. window下如何使用文本编辑器(如记事本)创建、编译和执行Java程序

    window下如何使用文本编辑器(如记事本)创建Java源代码文件,并编译执行 第一步:在一个英文目录下创建一个 .text 文件 第二步:编写代码 第三步:保存文件 方法一:选择 文件>另存为 ...

  9. 关于富文本编辑器—UEditor(java版)的使用,以及如何将UEditor的文件/图片上传路径改成绝对路径

    突然发现好久没写博客了,感觉变懒了,是要让自己养成经常写文章的习惯才行.既可以分享自己的所学,和所想,和大家一起讨论,发现自己的不足的问题. 大家可能经常会用到富文本编辑器,今天我要说的是UEdito ...

随机推荐

  1. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  2. ROS Learning-025 (提高篇-003 A Mobile Base-01) 控制移动平台

    ROS 提高篇 A Mobile Base-01 - 控制移动平台 - 基本知识 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 ...

  3. EZOJ #77

    传送门 分析 一个比较神奇的思路 我们考虑分治,对于每一个区间[le,ri]我们计算这个区间中左端点属于[le,mid],右端点属于[mid+1,ri]的情况对答案的贡献 我们求左半个区间的最大最小值 ...

  4. map集合的应用

    分析以下需求,并用代码实现: (1)利用键盘录入,输入一个字符串 (2)统计该字符串中各个字符的数量例如 用户输入字符串"If~you-want~to~change-your_fate_I_ ...

  5. 【Arcgis for android】spatialite打开shapefile

    互联网(free and share) 本文参考下面的博文: http://blog.csdn.net/arcgis_all/article/details/8232976 Preparation: ...

  6. Chrom去掉"未选择任何文件"

    <style> input[type="file"] { color: transparent; } </style>

  7. 理解CNN中的通道 channel

    在深度学习的算法学习中,都会提到 channels 这个概念.在一般的深度学习框架的 conv2d 中,如 tensorflow .mxnet ,channels 都是必填的一个参数. channel ...

  8. spark(2.2) - spark-shell RDD编程

    [基本操作] 1* 从文件系统中加载数据创建RDD -> 本地文件系统 ->HDFS 2* 转换操作 [ 会创建新的RDD ,没有真正计算 ] >> filter() > ...

  9. 学习高性能mysql

    Mysql 的InnoDB存储引擎实现的不是简单的行级锁,实现的是MVCC,多版本并发控制,可以理解成行级锁的一个变种. InnoDB的MVCC是通过在每行纪录后面保存两个隐藏的列来实现的.这两个列, ...

  10. UVa_Live 3664(精度坑)

    题意很好理解的贪心题,然而却卡疯了的精度坑. 再次理解一下double小数运算时可能导致的精度问题,本题为避免该问题可以将小数乘以100化为整数进行比较,输出的时候再除以100就ok: 思路也很好想, ...