用arraylist按行存储文本,通过system.in/system.out实现交互式i/o,封装add/insert/delete/show等操作,命令解析后映射到list方法,文件存取基于fileinputstream/outputstream,轻量可控,适合教学或嵌入简单工具。

用 List 集合配合基础 I/O 流编写文本组件,核心是把“文本”看作有序行序列,用 ArrayList<string></string> 存储内容,再通过 System.in 和 System.out 实现交互式输入输出。不需要 GUI 或高级流(如 BufferedReader),轻量、可控、便于教学或嵌入简单工具中。
用 ArrayList 按行管理文本内容
文本本质是多行字符串,ArrayList<string></string> 天然支持索引增删改查,比数组灵活,比 LinkedList 在随机访问更高效,适合编辑器场景:
- 每行作为独立字符串存入 list,行号从 1 开始(用户友好),内部索引仍为 0 起始
- 提供标准操作封装:比如
addLine(String)尾部追加、insertLine(int row, String)插入到第 row 行、deleteLine(int row)删除第 row 行(需校验范围) - 避免直接暴露 list 引用,用 getter 返回不可修改副本(
Collections.unmodifiableList()),防止外部误改
用 System.in/read() 实现基础命令输入
不依赖 Scanner,用字节流逐字读取 + 手动拼接,更贴近底层 I/O 理解:
- 循环调用
System.in.read(),遇到'\n'或'\r'停止,中间字符拼成完整命令行 - 注意过滤回车符(
\r)只保留换行逻辑,避免 Windows 下多出空行 - 建议封装为
readLine()工具方法,提升可读性;trim 后再解析,容错空格 - 命令格式统一:如
"add hello world"、"del 3"、"save note.txt"
命令解析与 List 操作映射
对输入字符串按空格分割,首词决定动作,后续参数转义后传给对应方法:
-
"add 内容"→list.add(内容) -
"ins 2 新内容"→list.add(1, 新内容)(第 2 行对应索引 1) -
"del 5"→ 先检查5 ,再 <code>list.remove(4) -
"show"→ 遍历 list,System.out.println((i+1) + ": " + line)带行号输出 -
"quit"→ 结束主循环
文件存取用 FileInputStream/OutputStream 实现
保存和加载只需一次性操作,无需缓冲流也能满足基础需求:
- 加载:用
FileInputStream读文件字节,再用new String(bytes, StandardCharsets.UTF_8)解码,按"\n"分割后逐行add到 list - 保存:遍历 list,对每行调用
FileOutputStream.write(line.getBytes(StandardCharsets.UTF_8)),手动写'\n'换行 - 注意异常捕获(
IOException)并提示用户,比如“文件不存在”或“权限不足”











