----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1.IO流用来处理设备之间的数据传输。
2.java对数据的操作是通过流的方式。
3.java用于操作流的对象都在IO包中
4.流按操作数据分为两种:字节流与字符流。其中字符流可以选择用什么编码
5.流按流向分为:输入流,输出流。IO流常用类型
1.字节流的抽象基类:InputStream,OutputStream
2.字符流的抽象基类:Reader,Writer
3.注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
eg:InputStream的子类FileInputStream。
Reader的子类FileReader。
4.数据最常见的体现形式是:文件。
5.IO子类对象的文件名中:前半部分表示该流对象的的功能,后半部分为父类名。
一:FileWriter类
1.创建一个FileWriter类的对象,该对象被初始化必须要明确被操作的文件。而且该文件会被创建到指 定的目录下
eg:FileWriter fw=new FileWriter("demo.txt");
如果该目录下原来存在一个名为demo的txt文件,则会被覆盖掉。即上面的语句创建了一个新文件。
2.flush():刷新流对象中的缓冲中的数据,将数据刷新到目的地中。
3.close(): 关闭流资源,但关闭前会刷新一次内部的缓冲中的数据,将数据刷新到目的地。
和flush区别:flush刷新后,可以继续使用流,close刷新后,会将流关闭。
4.FileWriter类的对象最后必须调用close()方法来刷新缓冲流。
5.凡是与设备打交道的流都会涉及到IO异常。
6.finally里面装的是释放的资源(即关闭的流资源)。
7.文件找不到异常是IO异常的一部分。
8.public static void main(String[] args)
{
FileWriter fw=null; //在外面建立应用,在try里进行初始化。
try
{
fw=new FileWriter("demo.txt");
fw.write("abcdefg");
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(fw!=null) //File中一定要对关闭流的对象进行不为空的判断。
fw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
二:FileReader类
1.FileReader fr=new FileReader("demo.txt");
//创建一个文件读取流对象,和制定名称的文件相关联
要保证该文件是已经存在的,如果不存在,会发生异常
int ch=fr.read())!=-1 //调用读取流对象的read方法:一次读一个字符,而且会自动往下读,
-1表示读到了该文件的末尾处。
2.FileReader fr=new FileReader("demo.txt");
char [] buf=new char[1024]; //定义一个字符数组,用于存储读到的字符
while(num=fr.read(buf))!=-1) //该read(char [])返回的是读到的字符个数
3.FileWriter fw=new FileWriter("demo.txt",true);
//传递一个true参数,代表不覆盖已有的文件,并在已有文件的末尾处进行数据的续写。
fw.write("nihao\r\nxiexie");
//在windows中write方法写出的数据要换行输出,必须加上\r\n不能只是\n。
4.//打印一个java文件的原理
import java.io.*;
class FileReaderTest
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("Datedemo.java");
char [] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1)
{
System.out.print(new String(buf,0,num));
}
fr.close();
}
}
三:将C盘的一个文件复制到D盘
复制的原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。
步骤:
1.在D盘创建一个文件,用于存储C盘文件中的数据。
2.定义读取流和C盘文件关联。
3.通过不断的读写完成数据存储。
4.关闭资源。
四:复制的两种方式:
一:边读边写
public static void copy_1() throws IOException
{
//创造目的地
FileWriter fw=new FileWriter("RuntimeDemo_copy.txt");
//与已有文件关联
FileReader fr=new FileReader("RuntimeDemo.java");
int ch=0;
while((ch=fr.read())!=-1)
{
fw.write(ch);
}
fw.close();
fr.close();
}
二:先读完后再写
public static void copy_2()
{
FileWriter fw=null;
FileReader fr=null;
try
{
fw=new FileWriter("RuntimeDemo_copy.txt");
fr=new FileReader("RuntimeDemo.java");
char [] buf=new char[1024];
int len=0;
while((len=fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
if(fr!=null)
try
{
fr.close();
}
catch (IOException e)
{
e.printStackTrace();
}if(fw!=null)
try
{
fw.close();
}
catch (IOException e)
{
e.printStackTrace();
}}
}
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------