------- android培训、java培训、期待与您交流! ----------
初识IO
所谓IO流即是用于处理设备之间数据传输的一种技术,Java中用于操作IO流的对象都在io包中。
流按照操作的数据类型分为两种:
第一种是字符流,字符流用于操作纯文本数据。其基类是:输出(Writer)、输入(Reader)
第一种是字节流,字节流用于操作媒体数据,例如:MP3、视频文件等。其基类是:输出(OutputStream)、输入(InputStream)
按照流的流向可分为输入流和输出流
IO是用于对数据的操作,而操作数据的常见形式是文件,所以练习时主要就是使用IO对文件进行操作。首先进行演示的是字符流。
操作演示如下代码:
mport java.io.*;
class FileWriterDemo
{
public static void main(String[] args)throws IOException
{
//创建一个FileWriter对象。该对象一被创建就必须要明确要有被操作的文件。
//该文件会被创建到指定的目录下。。如果该目录下已有同名文件,将会被覆盖
//其实该步就是在明确数据要存放的目的地
FileWriter file=new FileWriter("SelfDemo.text");
//调用write方法将字符串写入到了流里边
file.write("黑马真棒!");
//刷新流对象里的缓冲中的数据,将数据刷到目的地中
file.flush();
//close关闭流资源,关闭之前会刷新一次内部缓冲中的数据,将数据刷到目的地中
//和flush的区别:flush刷新后,流可以继续使用;close刷新后,会关闭流
file.close();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
使用IO技术进行数据的存取,会涉及到数据源,数据目的地等路径的选取,所以在操作过程中对其异常的处理尤其的重要,所以下段代码是对如何处理IO异常的一个演示:
import java.io.*;
class FileWriterDemo
{
public static void main(String[] args)
{
FileWriter file=null;//建立全局变量
try
{
file=new FileWriter("SelfDemo.txt");
file.write("黑马真棒!");
}
catch (IOException e)
{
sop(e.toString());
}
finally
{
try
{
if(file!=null)
file.close();
}
catch (IOException e)
{
sop(e.toString());
}
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
对IO的输入输出流进行操作时一定要记得必须执行语句finally{try{if(file!=null)file.close()}catch(IOException e){}},如果不关闭系统底层与资源的连接,那样会耗费系统资源,并且占用内存。
如果需要对已有文件进行续写只需将file=new FileWriter("SelfDemo.txt"更改为file=new FileWriter("SelfDemo.txt",true);//true代表可以对已有文件进行续写,这样便不会覆盖原有文件。
同样对文件进行读取,并将其数据输出至另一个文件中所具备的条件是:首先要明确数据源,数据源可以通过键盘录入,同时也可以是硬盘上已有的数据。通过使用FileReader进行数据的读取,进行代码演示如下:
import java.io.*;
class FileReaderDemo
{
public static void main(String[] args)
{
try
{
charRead();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
public static void singleRead() throws IOException
{
//创建一个文件读取流对象,和指定名称的文件相关联
//要保证该文件已经存在,如果不存在会发生FileNotFoundException
FileReader file=new FileReader("SelfDemo.txt");
//调用读取流的读取方法
//int ch=file.read();//读取单个字符,连续调用会自动往下读取。当读到流的末尾会返回-1
int ch=0;
while ((ch=file.read())!=-1)
{
System.out.println((char)ch);
}
file.close();
}
}
在IO流技术中,除了字符流可以对数据进行操作外,还有字节流。字节流的使用方法和字符流其实差不多,方法基本上雷同。在我个人看来,唯一一点的不同点在于字节流在对数据进行读取和输出是不用刷新流,即字符流中的flush()方法,其余今本上差距不大,所以只要掌握了字符流对象的一些操作,再重点观看一下字节流的操作,便能掌握流的基本知识。
------- android培训、java培训、期待与您交流! ----------