哪个Java IO类更适合用于简单的shell解释器?

时间:2016-05-28 13:57:11

标签: java shell io tokenize

我是Java IO库的新手,因此无法为我的目的选择合适的类。我为文件传输服务器编写了一个简单的shell客户端。我的客户端应该理解三个命令:远程目录中的列表文件(可选择将嵌套目录路径作为参数),下载指定文件(文件路径作为必需参数)并结束会话(单独的命令) 。我担心此刻处理用户的输入。 所以问题是:

  1. 我是否应该阅读整行输入,对其进行标记,然后才进行一些逻辑,或者最好在输入时对输入进行标记,并根据它立即做出决定?
  2. 我应该使用什么类来标记输入:Scanner或StreamTokenizer?或者考虑到我的命令很简单,我可以使用BufferedReader读取一行,然后用"\\s+"模式拆分字符串?
  3. 这些问题在某种程度上可能看似主观,但我只想减少混淆并理解这些IO类的具体用例。

1 个答案:

答案 0 :(得分:3)

  1. 考虑到命令是基本的,读取整个输入然后标记化将需要很多努力。最好将输入标记化,然后根据需要做出决定。
  2. 我认为BufferedReader足以满足您的目的。它会使代码变得容易。即使我正在努力从csv文件中获取输入,然后将其标记为显示为图形,我也使用了相同的文件。我解析字符串的逻辑如下: -

      String splitBy = ";"; // As I am using CSV file below I used ";" as splitter. You can change as per your needs
    
      BufferedReader br = new BufferedReader(new FileReader("file.csv"));
      String line = br.readLine();
      while((line = br.readLine()) != null)
      {
           String[] b = line.split(splitBy);
           //Take actions you need to perform
      }
      br.close();
    
  3. 希望这能回答你的问题。如果需要更多详细信息,请与我们联系。