Count.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.fs.shell;
  19. import java.io.*;
  20. import java.util.List;
  21. import org.apache.hadoop.conf.Configuration;
  22. import org.apache.hadoop.fs.FileSystem;
  23. import org.apache.hadoop.fs.Path;
  24. /**
  25.  * Count the number of directories, files, bytes, quota, and remaining quota.
  26.  */
  27. public class Count extends Command {
  28.   public static final String NAME = "count";
  29.   public static final String USAGE = "-" + NAME + "[-q] <path>";
  30.   public static final String DESCRIPTION = CommandUtils.formatDescription(USAGE, 
  31.       "Count the number of directories, files and bytes under the paths",
  32.       "that match the specified file pattern.  The output columns are:",
  33.       "DIR_COUNT FILE_COUNT CONTENT_SIZE FILE_NAME or",
  34.       "QUOTA REMAINING_QUATA SPACE_QUOTA REMAINING_SPACE_QUOTA ",
  35.       "      DIR_COUNT FILE_COUNT CONTENT_SIZE FILE_NAME");
  36.   
  37.   private boolean qOption;
  38.   /** Constructor
  39.    * 
  40.    * @param cmd the count command
  41.    * @param pos the starting index of the arguments 
  42.    */
  43.   public Count(String[] cmd, int pos, Configuration conf) {
  44.     super(conf);
  45.     CommandFormat c = new CommandFormat(NAME, 1, Integer.MAX_VALUE, "q");
  46.     List<String> parameters = c.parse(cmd, pos);
  47.     this.args = parameters.toArray(new String[parameters.size()]);
  48.     if (this.args.length == 0) { // default path is the current working directory
  49.       this.args = new String[] {"."};
  50.     }
  51.     this.qOption = c.getOpt("q") ? true: false;
  52.   }
  53.   
  54.   /** Check if a command is the count command
  55.    * 
  56.    * @param cmd A string representation of a command starting with "-"
  57.    * @return true if this is a count command; false otherwise
  58.    */
  59.   public static boolean matches(String cmd) {
  60.     return ("-" + NAME).equals(cmd); 
  61.   }
  62.   @Override
  63.   public String getCommandName() {
  64.     return NAME;
  65.   }
  66.   @Override
  67.   protected void run(Path path) throws IOException {
  68.     FileSystem fs = path.getFileSystem(getConf());
  69.     System.out.println(fs.getContentSummary(path).toString(qOption) + path);
  70.   }
  71. }