package inputSystem;import java.util.Scanner;/*** @author Cherry* @date 2022年1月19日* @time 15:48* @brief 从标准输入流中(控制台)中读入缓冲区*/public class StdInHandler implements FileHandler {//接收所有输入的字符串,将所有语句连成一行字符串public StringBuilder input_buffer = new StringBuilder();//input_buffer当前指针位置private int curPos = 0;@Overridepublic void Open() {Scanner sc = new Scanner(System.in);while (true) {String line = sc.nextLine();if (line.equals("end")) {break;}input_buffer.append(line); //StringBuilder线程不安全,但性能高于StringBufferinput_buffer.append('\n'); //**每一行后面加上换行符}//sc.close(); //一次输入完就关闭输入流}@Overridepublic int Close() {return 0;}/*** 从 input_buffer 中读数据到缓冲区* @param buf 缓冲区 Start_buf* @param begin 缓冲区写入的起始地址* @param len 缓冲区要写入字符的长度* @return 返回实际上写入的字符数量*/@Overridepublic int Read(byte[] buf, int begin, int len) {int readCnt = 0; //实际上读取的字符数量if (curPos >= input_buffer.length()) {return 0;}byte[] inputBuf = input_buffer.toString().getBytes();//当已经读取的字符串长度小于要求读取的长度 且 已经读取的长度小于输入流中剩余的长度while (readCnt < len && curPos + readCnt < input_buffer.length()) {buf[begin + readCnt] = inputBuf[curPos + readCnt];readCnt++;}curPos = curPos + readCnt;return readCnt;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。