scala用while循环读取reader或者流

2011-12-06 15:07:06.0

在scala中希望通过JAVA的那种方式来读取文件while( (line = reader.readNext()) != null ) { .... }

编译的时候警告 values of types Unit and Null using `!=' will always yield true

原因是scala中并不支持A=B=C这种方式来赋值

搜索了相关资料,可以通过花括号来解决装这个问题

while({line=reader.readNext; line != null})

java对IO流进行分流

2010-06-18 12:44:50.0

java对IO流进行分流,同时将一个输入流写入多个输出流

package org.richin.io.Stream.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 对流进行分流,同时将一个输入流写入多个输出流
* @author Administrator
*
*/
public class TeeOutputStream extends OutputStream {
private OutputStream out1;
private OutputStream out2;
public TeeOutputStream(OutputStream stream1, OutputStream stream2)
{
//调用父类的构造方法,传入需要过滤的流
//super(stream1);
out1 = stream1;
out2 = stream2;
}
//重写write方法
public void write(int b) throws IOException
{
out1.write(b);
out2.write(b);
}
//重写write方法
public void write(byte[] data, int offset, int length) throws IOException
{
out1.write(data, offset, length);
out2.write(data, offset, length);
}
//重写flush方法
public void flush() throws IOException
{
out1.flush();
out2.flush();
}
//重写close方法
public void close() throws IOException
{
out1.close();
out2.close();
}
public static void copy(InputStream in, OutputStream out)
throws IOException {
// 缓冲流
BufferedInputStream bin = new BufferedInputStream(in);
BufferedOutputStream bout = new BufferedOutputStream(out);
while (true) {
int datum = bin.read();
if (datum == -1)
break;
bout.write(datum);
}
// 刷新缓冲区
bout.flush();
}
//main方法
public static void main(String[] args) throws IOException {
FileInputStream fin = new FileInputStream("E:\\gzml\\gongzhens\\yaxi\\设计稿\\快递.rar");
FileOutputStream fout1 = new FileOutputStream("D:/快递.rar");
FileOutputStream fout2 = new FileOutputStream("e:/快递.rar");
TeeOutputStream tout = new TeeOutputStream(fout1, fout2);
TeeOutputStream.copy(fin, tout);
fin.close();
tout.close();
}
}

byte[]和InputStream的相互转换

2010-06-07 12:50:02.0

1:byte[]转换为InputStream

InputStream sbs = new ByteArrayInputStream(byte[] buf);



2:InputStream转换为byte[]数组

ByteArrayOutputStream swapStream = new ByteArrayOutputStream();

byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据

int rc = 0;