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

org.snapscript.core.type.extend.ReaderExtension Maven / Gradle / Ivy

package org.snapscript.core.type.extend;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;

public class ReaderExtension {

   public ReaderExtension() {
      super();
   }
   
   public Reader buffer(Reader reader, int size) throws IOException {
      return new BufferedReader(reader, size);
   }
   
   public String readText(Reader reader) throws IOException {
      StringBuilder builder = new StringBuilder();
      char[] data = new char[1024];
      int count = 0;
      
      try {
         while((count = reader.read(data)) != -1) {
            builder.append(data, 0, count);
         }
         return builder.toString();
      } finally {
         reader.close();
      }
   }
   
   public List readLines(Reader reader) throws IOException {
      LineNumberReader iterator = new LineNumberReader(reader);
      List lines = new ArrayList();
      
      try {
         while(true) {
            String line = iterator.readLine();
            
            if(line == null) {
               return lines;
            }
            lines.add(line);
         }
      } finally {
         iterator.close();
      }
   }
   
   public void copyTo(Reader reader, Writer writer) throws IOException {
      char[] data = new char[1024];
      int count = 0;
      
      try {
         while((count = reader.read(data)) != -1) {
            writer.write(data, 0, count);
         }
      } finally {
         reader.close();
      }
   }

   public void copyTo(Reader reader, StringBuilder builder) throws IOException {
      char[] data = new char[1024];
      int count = 0;
      
      try {
         while((count = reader.read(data)) != -1) {
            builder.append(data, 0, count);
         }
      } finally {
         reader.close();
      }
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy