blob: 1049adf946bf8a4aa82d3e11b0c5217487dba019 [file] [log] [blame]
/*
* Copyright 1999-2011 Alibaba Group.
*
* 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.alibaba.dubbo.common.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
public class IOUtils
{
private static final int BUFFER_SIZE = 1024 * 8;
private IOUtils() {}
/**
* write.
*
* @param is InputStream instance.
* @param os OutputStream instance.
* @return count.
* @throws IOException.
*/
public static long write(InputStream is, OutputStream os) throws IOException
{
return write(is, os, BUFFER_SIZE);
}
/**
* write.
*
* @param is InputStream instance.
* @param os OutputStream instance.
* @param bufferSize buffer size.
* @return count.
* @throws IOException.
*/
public static long write(InputStream is, OutputStream os, int bufferSize) throws IOException
{
int read;
long total = 0;
byte[] buff = new byte[bufferSize];
while( is.available() > 0 )
{
read = is.read(buff, 0, buff.length);
if( read > 0 )
{
os.write(buff, 0, read);
total += read;
}
}
return total;
}
/**
* read string.
*
* @param reader Reader instance.
* @return String.
* @throws IOException.
*/
public static String read(Reader reader) throws IOException
{
StringWriter writer = new StringWriter();
try
{
write(reader, writer);
return writer.getBuffer().toString();
}
finally{ writer.close(); }
}
/**
* write string.
*
* @param writer Writer instance.
* @param string String.
* @throws IOException.
*/
public static long write(Writer writer, String string) throws IOException
{
Reader reader = new StringReader(string);
try{ return write(reader, writer); }finally{ reader.close(); }
}
/**
* write.
*
* @param reader Reader.
* @param writer Writer.
* @return count.
* @throws IOException.
*/
public static long write(Reader reader, Writer writer) throws IOException
{
return write(reader, writer, BUFFER_SIZE);
}
/**
* write.
*
* @param reader Reader.
* @param writer Writer.
* @param bufferSize buffer size.
* @return count.
* @throws IOException.
*/
public static long write(Reader reader, Writer writer, int bufferSize) throws IOException
{
int read;
long total = 0;
char[] buf = new char[BUFFER_SIZE];
while( ( read = reader.read(buf) ) != -1 )
{
writer.write(buf, 0, read);
total += read;
}
return total;
}
/**
* read lines.
*
* @param file file.
* @return lines.
* @throws IOException.
*/
public static String[] readLines(File file) throws IOException
{
if( file == null || !file.exists() || !file.canRead() )
return new String[0];
return readLines(new FileInputStream(file));
}
/**
* read lines.
*
* @param is input stream.
* @return lines.
* @throws IOException.
*/
public static String[] readLines(InputStream is) throws IOException
{
List<String> lines = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
try
{
String line;
while( (line = reader.readLine()) != null )
lines.add(line);
return lines.toArray(new String[0]);
}
finally
{
reader.close();
}
}
/**
* write lines.
*
* @param os output stream.
* @param lines lines.
* @throws IOException.
*/
public static void writeLines(OutputStream os, String[] lines) throws IOException
{
PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
try
{
for( String line : lines )
writer.println(line);
writer.flush();
}
finally
{
writer.close();
}
}
/**
* write lines.
*
* @param file file.
* @param lines lines.
* @throws IOException.
*/
public static void writeLines(File file, String[] lines) throws IOException
{
if( file == null )
throw new IOException("File is null.");
writeLines(new FileOutputStream(file), lines);
}
/**
* append lines.
*
* @param file file.
* @param lines lines.
* @throws IOException.
*/
public static void appendLines(File file, String[] lines) throws IOException
{
if( file == null )
throw new IOException("File is null.");
writeLines(new FileOutputStream(file, true), lines);
}
}