All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.seratch.scalikesolr.util.IO.scala Maven / Gradle / Ivy

There is a newer version: 4.0.0
Show newest version
/*
 * Copyright 2011 Kazuhiro Sera
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */

package com.github.seratch.scalikesolr.util

import java.io.{ InputStreamReader, BufferedReader, InputStream }

object IO {

  def using[CLOSABLE <: { def close(): Unit }, RETURNED](resource: CLOSABLE)(func: CLOSABLE => RETURNED): RETURNED = {
    try {
      func(resource)
    } finally {
      resource match {
        case null =>
        case _ => try resource.close() catch {
          case _ =>
        }
      }
    }
  }

  def readAsString(is: InputStream, charset: String): String = {
    using(is) {
      is =>
        {
          using({
            new BufferedReader(charset match {
              case null => new InputStreamReader(is)
              case _ => new InputStreamReader(is, charset)
            })
          }) {
            br =>
              {
                val buf = new StringBuilder
                var line: String = null
                while ({
                  line = br.readLine;
                  line
                } != null) {
                  buf.append(line)
                  buf.append("\n")
                }
                buf.toString
              }
          }
        }
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy