.InputStream类
read()方法,逐字地以二进制的原始方法读取数据
public int read(); //读入一个字节,-1表示无
public int read(bytr b[]); //返回读入的字节数
2.OutputStream类
write()方法,是将字节写入流中
public void write (int b); //将参数b的低位字节写入到输出流
public void write (byte b[]); //将字节数组b中的全部字节顺序写入到输出流
Output的另外两个写法是flush()和close()
public void flush(); //刷新缓存,写入到文件
public void close(); //关闭流
3.Reader 类和Writer类
Reader类 : 输入流,读取的是字符(char)
Writer类 : 输出流,写入的是字符
public int read(); //将int类转换成char
public int read(char b[]);
public void write(int b); //将参数b的低两字节写入到输出流
public void write(char b[]); //将字符数组b的全部字节顺序写入到输出流
public void write(String s); //将字符串写入流中
4.标准输入和标准输出
System.in 为 InputStream类型
System.out 为 PrintStream类型
System.err 为 PrintStream类型
二进制流的读写:
import java.io.*;
public class Dump {
public static void main(String[]args) {
try
{
dump( new FileInputStream("aaa.bmp"),
new FileOutputStream("bbb.bmp"));
}
catch(FileNotFoundException fex)
{
fex.printStackTrace();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
public static void dump(InputStream src, OutputStream dest)
throws IOException
{
InputStream input = new BufferedInputStream(src);
OutputStream output = new BufferedOutputStream(dest);
byte[] data = new byte[1024];
int length = -1;
while ((length = input.read(data)) != -1) {
output.write(data, 0, length);
}
input.close();
output.close();
}
}
字符的读写:
import java.io.*;
public class CopyFileAddLineNumber {
public static void main (String[] args) {
String infname = "CopyFileAddLineNumber.java";
String outfname = "CopyFileAddLineNumber.txt";
if( args.length >= 1 ) infname = args[0];
if( args.length >= 2 ) outfname = args[1];
try {
File fin = new File(infname);
File fout = new File(outfname);
BufferedReader in = new BufferedReader(new FileReader(fin));
PrintWriter out = new PrintWriter(new FileWriter(fout));
int cnt = 0; // 行号
String s = in.readLine();
while ( s != null ) {
cnt ++;
s = deleteComments(s); //去掉以//开始的注释
out.println(cnt + ": \t" + s ); //写出
s = in.readLine(); //读入
}
in.close(); // 关闭缓冲读入流及文件读入流的连接.
out.close();
} catch (FileNotFoundException e1) {
System.err.println("File not found!" );
} catch (IOException e2) {
e2.printStackTrace();
}
}
static String deleteComments( String s ) //去掉以//开始的注释
{
if( s==null ) return s;
int pos = s.indexOf( "//" );
if( pos<0 ) return s;
return s.substring( 0, pos );
}
}
对象的读写:
import java.io.*;
class Person implements Serializable
{
String name;
int age;
Person(String name, int age){
this.name=name; this.age=age;
}
public String toString(){
return name + "(" + age + ")";
}
};
public class SerializeDemo {
public static void main (String[] args) throws IOException{
Person [] ps = { new Person("Li",18), new Person("Wang",19) };
ObjectOutputStream output = new ObjectOutputStream( new FileOutputStream("s.temp") );
for(Person p : ps) output.writeObject(p);
output.close();
ObjectInputStream input = new ObjectInputStream( new FileInputStream("s.temp") );
Person p = null;
try{
while( (p=(Person)input.readObject()) != null ){
System.out.println(p);
}
}catch(ClassNotFoundException ex){}
catch(EOFException eofex){}
input.close();
}
}