diff --git a/util/io/IO.scala b/util/io/IO.scala index b7e3f90ee..51c31b7f0 100644 --- a/util/io/IO.scala +++ b/util/io/IO.scala @@ -508,12 +508,12 @@ object IO private def writeBytes(file: File, bytes: Array[Byte], append: Boolean): Unit = fileOutputStream(append)(file) { _.write(bytes) } + def readLinesURL(url: URL, charset: Charset = defaultCharset): List[String] = + urlReader(charset)(url)(readLines) - // Not optimized for large files def readLines(file: File, charset: Charset = defaultCharset): List[String] = fileReader(charset)(file)(readLines) - // Not optimized for large files def readLines(in: BufferedReader): List[String] = foldLines[List[String]](in, Nil)( (accum, line) => line :: accum ).reverse diff --git a/util/io/Using.scala b/util/io/Using.scala index 95f765f62..9928d31e4 100644 --- a/util/io/Using.scala +++ b/util/io/Using.scala @@ -84,6 +84,7 @@ object Using def fileWriter(charset: Charset = IO.utf8, append: Boolean = false) = file(f => new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f, append), charset)) ) def fileReader(charset: Charset) = file(f => new BufferedReader(new InputStreamReader(new FileInputStream(f), charset)) ) + def urlReader(charset: Charset) = resource( (u: URL) => new BufferedReader(new InputStreamReader(u.openStream, charset))) def jarFile(verify: Boolean) = file(f => new JarFile(f, verify), (_: JarFile).close()) def zipFile = file(f => new ZipFile(f), (_: ZipFile).close()) def streamReader = wrap{ (_: (InputStream, Charset)) match { case (in, charset) => new InputStreamReader(in, charset) } }