IO流
IO流分字符流和字节流
IO流的概念、基类有什么、特点
概念:IO流的概念是来源于对数据的操作,读写文件,IO流中定义的方法是为了更方便的操作数据,如在设备与设备之间的信息传输,就用到了IO流
基类:
字节流中的两个基类有,InputStream、OutputStream
字符流中的两个基类有,Reader、Writer
IO流特点:
- IO流用来处理设备间的数据传输
- Java对数据的操作是通过流的方式进行的
- 流按操作可分为字节流与字符流
- 按流向分为:输入流、输出流
FileWriter对象的方法:write | flush | close
当一个FlieWriter对象被建立好之后,这个对象就可以调用write()方法、flush()方法、close()方法,进行数据的读取、写入和关闭(在关闭之间,不需要指定flush方法,会自动被写入进目标文件中)
// 例子1:一个简单的文件写入
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo {
public static void main(String[] args) throws IOException
{
FileWriter fw = new FileWriter("demo.txt");
fw.write("wangziyu1"); // 写在了内存
fw.flush();// 也可以用这个方法
fw.close();// 将内存中的内容写入到目标文件
}
}
IO流异常的处理方式
IO流中的异常可以被抛出为IOException
//读写文件的标准写法
import java.io.FileWriter;
import java.io.IOException;
public class IoException {
public static void main(String[] args)
{
FileWriter fw = null;
try
{
fw = new FileWriter("demo.txt");
fw.write("WZY"); // 可能的报错环节1,如果目标文件不存在
}
catch (IOException E)
{
System.out.println(E.toString());
}
finally {
try {
if(fw!=null)
fw.close();//关闭环节 可能的报错环节2,如果fw未能被成功的创建出来指向目标文件。
}
catch (IOException F)
{
System.out.println(F.toString());
}
}
}
}
文件的续写
文件的续写是在已有的文件内容末尾添加新写入的内容
import java.io.FileWriter;
import java.io.IOException;
// 文件的续写
public class FileWriterDemo3 {
public static void main(String[] args) throws IOException
{
// 传递一个true参数,代表不覆盖已有文件,并在文件末尾续写
FileWriter fw = new FileWriter("demo.txt",true);
// \r表示将光标移动到最前面,\n表示将光标移动到下一行
fw.write("\r\n123");
fw.close();
}
}
读取方式
读取方式1:Fileread()方法
// 通过read()方法进行读写
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("demo.txt"); // 指定需要读取的目标
while (true)
{
int c = fr.read(); // 使用read()方法,将c读到内存
if(c==-1)
break;
System.out.println((char) c);
}
}
}
读取方式2:字符数组读取
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyText2 {
public static void main(String[] args) throws IOException
{
copy_2();
}
public static void copy_2()
{
FileWriter fw = null;
FileReader fr = null;
try {
fw = new FileWriter("demo_copy.txt"); // 准备写的文件
fr = new FileReader("demo.txt"); // 读文件进入缓存中
char[] buf = new char[1024];
int len = 0;
while ((len=fr.read(buf))!=-1) // 将fr内容读入buf中
{
//System.out.println(buf);
fw.write(buf,0,len);// 写入
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally {
if(fr!=null)
try
{
fr.close();
fw.close();
}
catch (IOException e)
{
}
}
}
}
文件的拷贝流程介绍(IO流在文件中被操作的流程)
文件拷贝流程