Skip to content
Snippets Groups Projects

(SCALA) Calcula o tamanho de arquivos de nome x dentro de uma arvore de dir

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Lior Spach
    Edited
    checkSizeMetadados 1.00 KiB
    #!/usr/bin/scala
    !#
    
    import java.io.File
    val nomearq = "metadados.txt"
    
    println("start")
    val dirs:List[String] = if (args.size>0) args.toList else List(".")
    sizePrintCada(dirs)
    
    //== Funções =====
    def sizePrintCada(dirs:List[String]) {
    
      def countSize(f:File):Long = {
        if (f.isFile) { 
          if (f.getName==nomearq)
            f.length
          else 
            0L
        } else if (f.isDirectory) {
          f.listFiles.par.map{countSize}.sum
        } else 0L
      }
      
      def printSize(pos:String, size:Long) {
        val s = size.toDouble
        print("Tamanho dos metadados em "+pos+": ")
        val (b,kb,mb,gb) = (1,1000,1000000,1000000000)
        if (s > gb) {
          printf("%.2fGB\n",s/gb)
        } else if (s>mb) {
          printf("%.2fMB\n",s/mb)
        } else if (s>kb) {
          printf("%.2fKB\n",s/kb)
        } else {
          printf("%.2fB \n",s/b)
        }
      }
    
      for (dir <- dirs) {
        var tamTotal = 0L
        val flist = (new File(dir)).listFiles.par
        val longSizes = flist.map{countSize}
        tamTotal = longSizes.seq.sum
        printSize(dir,tamTotal)
      }
    }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment