分类: 转载 |
1.
InputStream 抽象类
InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法.Inputstream类中的常用方法:
(1) public abstract int read(
):读取一个byte的数据,返回值是高位补0的int类型值。若返回值=-1说明没有读取到任何字节读取工作结束。
(2) public int read(byte b[
]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的
(3) public int read(byte b[ ], int off, int
len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。
(4) public int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用,
(5) public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数,
跳过一些字节来读取
(6) public int close( )
:我们在使用完后,必须对我们打开的流进行关闭.
2.OutputStream 抽象类
OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。 1. public void write(byte b[ ]):将参数b中的字节写到输出流。
2. public void write(byte b[ ], int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。
3. public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。
4. public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。
5. public void close( ) : 关闭输出流并释放与流相关的系统资源。
流结束的判断:方法read()的返回值为-1时;readLine()的返回值为null时。
3. 文件输入流: FileInputStream类
使用方法(1)
使用方法(2)
程序举例:
将InputFromFile.java的程序的内容显示在显示器上
http://img.my.csdn.net/uploads/201211/29/1354189800_1523.jpgI/O数据流(3)" />
-
import
java.io.IOException; -
import
java.io.FileInputStream; -
;
-
public
class TestFile { -
public static void main(String throwsargs[]) IOException { -
try{ -
FileInputStream rf=new FileInputStream( -
int n= 512;buffer[]= -
while((rf.read(buffer,0,n)!=-1)&&(n>0)){ -
System.out.println(new String(buffer) ); -
} -
System.out.println(); -
rf.close(); -
} catch(IOException IOe){ -
System.out.println(IOe.toString()); -
} -
-
} -
-
}
4.文件输出流:FileOutputStream类
创建一个文件流对象有两种方法:
方式1:
方式2:
FileOutputStream
out=new FileOutputStream(“d:/myjava/write.txt
");
方式3:构造函数将
FileDescriptor()对象作为其参数。
FileDescriptor() fd=new
FileDescriptor();
FileOutputStream f2=new
FileOutputStream(fd);
方式4:构造函数将文件名作为其第一参数,将布尔值作为第二参数。
FileOutputStream f=new
FileOutputStream("d:/abc.txt",true);
注意:
-
import
java.io.IOException; -
import
java.io.FileOutputStream; -
public
class TestFile { -
public static void main(String throwsargs[]) IOException { -
try { -
System.out.println("please Input );from Keyboard" -
int count, 512;n = -
byte buffer[] new= byte[n]; -
count = System.in.read(buffer); -
FileOutputStream wf = new FileOutputStream( "d:/myjava/write.txt"); -
wf.write(buffer, 0, count); -
wf.close(); // 当流写操作结束时,调用close方法关闭流。 -
System.out.println("Save to );the write.txt" -
} catch (IOException IOe) { -
System.out.println("File Write );Error!" -
} -
} -
-
}
5. FileInputStream流和FileOutputStream的应用
-
import
java.io.File; -
import
java.io.IOException; -
import
java.io.FileOutputStream; -
import
java.io.FileInputStream; -
-
public
class TestFile { -
public static void main(String throwsargs[]) IOException { -
try { -
File inFile = new File( "copy.java"); -
File outFile = new File( "copy2.java"); -
FileInputStream finS = new FileInputStream(inFile); -
FileOutputStream foutS = new FileOutputStream(outFile); -
int c; -
while ((c 1)= finS.read()) != - { -
foutS.write(c); -
} -
finS.close(); -
foutS.close(); -
} catch (IOException e) { -
System.err.println("FileStreamsTest: " + e); -
} -
} -
-
}
6.
缓冲输入输出流 BufferedInputStream/ BufferedOutputStream
BufferedInputStream:当向缓冲流写入数据时候,数据先写到缓冲区,待缓冲区写满后,系统一次性将数据发送给输出设备。
BufferedOutputStream :当从向缓冲流读取数据时候,系统先从缓冲区读出数据,待缓冲区为空时,系统再从输入设备读取数据到缓冲区。
将BufferedInputStream与FileInputStream相接
2)将内存写入文件:
将BufferedOutputStream与
FileOutputStreamout=new
BufferedOutputStream
3)键盘输入流读到内存
-
import
java.io.*; -
-
public
class ReadWriteToFile { -
public static void main(String throwsargs[]) IOException { -
InputStreamReader sin = new InputStreamReader(System.in); -
BufferedReader bin = new BufferedReader(sin); -
FileWriter out = new FileWriter( "myfile.txt"); -
BufferedWriter bout = new BufferedWriter(out); -
String s; -
while ((s 0)= bin.readLine()).length() > { -
bout.write(s, 0, s.length()); -
} -
-
} -
}
从键盘读入字符,并写入到文件中BufferedReader类的方法:String readLine()
作用:读一行字符串,以回车符为结束。
BufferedWriter类的方法:bout.write(String s,offset,len)
作用:从缓冲区将字符串s从offset开始,len长度的字符串写到某处。