---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
IO流(Input Output)
1.IO的概念
1)IO流主要是用来处理设备之间的数据传输。
2)JAVA对于数据的操作是通过流的方式。
3)JAVA用于操作流的对象都在IO包中。
4)流按操作数据分为两种:字节流与字符流。
5)流按流向分为:输入流与输出流。
2.什么是输入与输出呢?
输入流与输出流相对于内在设备而言的。站在不同的角度输入和输出也是不一样的。
在计算机中,将外设中的数据读取到内在当中就是输入。
而将内在中的数据写入到外设当中就是输出。
3.字符流的由来
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字。然后再对文字进行操作。简单来说就是,字节流+编码表。
4.IO流常用的基类
1)字节流的抽象基类:InputStream , OutputStream。
2)字符流的抽象基类:Reader , Writer.
如果要操作的是文字数据,建议优先考虑字符流。而且要将数据从内在写到硬盘上,要使用字符流中的输出流。
5.下面是一个简单的IO流小程序:其主要作用是创建一个txt文档在其中写入一串字符串。
public static void main(String[] args) throws Exception
{
//首先如果要想使用文件输出流就要创建一个文件输出流的对象
//用其父类去指向子类的引用, 这种方式比较好,推荐使用这种方式去创建对象。
Writer writer = new FileWriter("f:/aa.txt");
//下面是使用write方法,往方才创建的aa.txt中写一串字符串。
//注意, 其中如果创建aa.txt的时候如果硬盘中已经存在aa.txt时会把原有文件覆盖。
//如果在写入字符串的时候,aa.txt中存在内容,则会把原有的内容覆盖掉。
writer.write("Hello World !");
//还要记得,使用完流之后一定不要忘记把打开的流关闭掉。
writer.close();
//上面就可以成功的把Hello World写入到aa.txt了。
}
6.下面是IO异常的简单处理代码:
Writer writer = null;
try
{
//首先这里可以能会生异常,如果发生异常则会进行捕捉 。
writer = new FileWriter("f:/aa.txt");
writer.write("Hello World !");
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
//最后不管写入没有写入成功都要把打开的流进行关闭。
try
{
//然后这里也会发生异常, 因为如果,我们创建的路径不存在时,就不存在关闭问题了。
writer.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
好了以上就是解决IO异常的简单代码了。
7.下面是把已经写入aa.txt的文本从中读取出来代码如下:
//首先如果要读取文件要创建读文件
//创建时要给出所要读取的文件所在硬盘上的路径。
Reader reader = new FileReader("f:/aa.txt");
//然后就可以用里面的方法把aa.txt中的数据读取出来了。
System.out.println(reader.read());
//最后 关闭流。
reader.close();
下面是利用一个字符数组去存放已经读取的内容:
Reader reader = new FileReader("f:/aa.txt");
//下面是使用一个数组去存储读取的数据
//首先要生成 一个字符数组
char[] ch = new char[1024];
reader.read(ch);
//最后 把读取到ch数组中的数据输出到控制台。
//下面是利用string类的构造方法把ch转化成一个字符串
System.out.println(new String(ch));
//最后 关闭流。
reader.close();
使用读取方法时,第一次读取后会有个标识标识着你读到哪位置你下次再使用读方法时,就会直接从标识位置开始读,而不是从头开始读取 。循环时也是一样。
当文件读取到最后时,read方法会返回一个整数,当整数为-1时表示文件已经讲到末尾了。
8.下面是一个文件复制的程序:把aa.txt从f盘,复制到e盘:
//首先创建一个文件读取流,把要读取的文件读取到内在当中
Reader reader = new FileReader("f:/aa.txt");
//要完成复制功能,肯定要用到输出流。
//再创建一个用于输出的流。
Writer writer = new FileWriter("e:/aa.txt");
//下面就是读写过程:
int len = -1;
//创建一个存放数组,用于存放读取到的数据.
char[] ch = new char[1020];
while((len = reader.read(ch)) != -1)
{
//当读取完成后,就要开始写入工作了:
//也就是说,从每次读取到的0位置开始,一直写到,本次读取的长度 。
writer.write(ch, 0, len);
}
//最后 关闭打开的两个流文件。
reader.close();
writer.close();