一:字符和字节流
/*
字符流和字节流
字节流两个基类
Reader,Wirter
先学习一下字符流的特点。
既然io流是用于操作数据的。
那么先以操作文件为主来表示。
需求:创建一个文件并写入一些数据
找到一个专门用用于操作的Writer子类对象。FileWriter。后缀名是其父类名!
*/
import java.io.*;
class Writer1
{
public static void main(String[] args)throws IOException
{
//创建一个FileWriter对象,该对象以被初始化就必须要明确操作对象
FileWriter fw = new FileWriter("demo.text");
//而且该文件会被创建的指定目录下。如果有同名的文件。直接覆盖!
//调用write方法,将字符串写入到流中。
fw.write("abc");
fw.flush();
fw.close();//关闭之前会将缓冲清空!
}
}
二:读文件
import java.io.*;
class Read1
{
public static void main(String[] args) throws IOException
{
//创建一个文件读取对象。和指定名称的文件相关联。
//要保证该文件时已经存在的,如果不存在,会发生异常FileNotFOundException
FileReader fr = new FileReader("demo.txt");
//调用读取流对象的read方法。第一种:
//read();一次读一个字符,而且会自动往下读。
/*
while(true)
{
int ch = fr.read();
if (ch == -1)
break;
System.out.println("ch = "+(char)ch);
}
*/
//定义一个字符数组。用于存储读到的字符。
//该read(char[])返回的是读到的字符个数。
char[] buf = new char[3];
int num = 0;
while((num = fr.read(buf))!=-1)
{
System.out.println(num +"....."+ new String(buf,0,num));
}
}
}
三:io异常处理
/*
io异常的处理
演示对已有文件的数据续写。
*/
import java.io.*;
class FileWriter1
{
public static void main(String[] args)
{
FileWriter fw=null;
try
{
//fw = new FileWriter("Demo.txt");
//传递一个True参数,代表不覆盖已有的文件。并在文件末尾处续写数据、
fw = new FileWriter("Demo.text",true);
fw.write("abcd\r\nefg");
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(fw!=null)
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
}