---------------------- android培训、java培训、期待与您交流! ----------------------
概念:程序的主要任务是操作数据,在运行时,这些数据都必须位于内存中,并且属于特定的类型,程序才能操控它们。io就是指应用程序对设备的数据输入与输出。在java中把一组有序的数据序列称为流,根据操作的不同可以把流分为输入流和输出流。
File类:它既能够代表一个特定的名称,又能代表一个目录下的一组文件的名称,如果是文件的集合,我们可以调用list()方法,返回一个字符数组,包含该目录下的文件名。如果是一个文件时,我们能够创建,删除文件,判断文件是否存在等操作。
字符输入流和输出流:
Reader类型:ArrayReader 字符数组输入流,BufferedReader为其它Reader提供缓冲区有一个一次读取一行的readLine()方法,而Bufferedwriter没有WritLine方法;StringReader 字符串输入流,InputStreamReader将InputStream转换为Reader类型(FileReader是InputStreamReader的一个子类,用于从文件中读取数据,不能指定字符编码类型)能够按照指定字符编码读取输入流中的字符;
字节输入流和输出流:
InputStream表示字节输入流:主要方法:read()从输入流中读取数据,close()关闭输入流;OutputStream表示字节输出流,主要方法 void write()往输出流写入数据,void close()关闭输出流,void flush()一些带有缓冲区的子类覆盖该方法,通过缓冲区的输出流写数据时,数据先保存在缓冲区中,积累到一定程度才会真正写到输出流中,缓冲区实际上是一块内存空间。
所有的字节输入流都是InputStream类的直接或者间接子类,ByteArrayInputStream 字节数组输入流,FileInputStream 文件输入流。
RandomAccessFile:该类不是算是IO体系中子类,而是直接继承自Object,但是它是IO包中成员,具备读和写功能。
内部封装了一个数组,而且通过指针对数组的元素进行操作,可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的 位置。通过构造函数可以看出,该类只能操作文件。操作文件模式有:只读r,读写rw等。
如果模式为只读 r,不会创建文件。会去读取一个已存在文件,如果该文件不存在,则会出现异常。
如果模式rw,操作的文件不存在,会自动创建。如果存则不会覆盖。
import java.io.*;
class TestRandomAccessFile
{
static String f = "1.txt";
public static void main(String[] args) throws Exception
{
RandomAccessFile rf = new RandomAccessFile(f,"rw");
for (int i=0;i<7 ;i++ )
{
rf.writeDouble(i*1.414);
}
rf.close();
display();
System.out.println("Hello World!");
}
public static void display() throws Exception
{
RandomAccessFile rf = new RandomAccessFile(f,"r");
for (int i=0;i<7 ;i++ )
{
System.out.println(rf.readDouble());
}
rf.close();
}
}
管道流的实例
import java.io.*;
public class TestPipedStream
{
public static void main(String[] args)
{
try{
sender s = new sender();
receiver r = new receiver();
PipedOutputStream out=s.get();
PipedInputStream in =r.get();
out.connect(in);
s.start();
r.start();
}catch(Exception e){}
}
}
class sender extends Thread
{
PipedOutputStream out = new PipedOutputStream();
PipedOutputStream get()
{
return out;
}
public void run()
{
String s = new String("hello world");
try
{
out.write(s.getBytes());
out.close();
}catch(Exception e){}
}
}
class receiver extends Thread
{
PipedInputStream in = new PipedInputStream();
PipedInputStream get()
{
return in;
}
public void run()
{
try
{
byte[] buf = new byte[1024];
int len = in.read(buf);
String s = new String(buf,0,len);
System.out.println("the fllowing message from sender\n"+s);
in.close();
}catch(Exception s){}
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima