----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
IO流用来处理设备之间的数据传输
java对数据的操作是通过流的方式
流按照操作数据分为两种:字节流和字符流
流按流向分为:输入流和输出流
IO常用的基类
字节流的抽象基类:
InputStream,OutputStream
字符流的抽象基类:
Reader,Writer
1.FileWriter类
源码:
/*
*IO流式用于操作数据的
*最常见的体现形式是:文件
*
*找到一个专门用于操作文件的Writer子类对象。FileWriter
*/
import java.io.*;
class FileWriterDemo
{
public static void main(String[] args) throws IOException
{
//创建一个FileWriter对象,该对象一被初始化就必须明确被操作的文件
//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
FileWriter fw=new FileWriter("demo.txt");
//调用writer方法,将字符串写入到流中。
fw.write("abcde");
//刷新流对象中的的缓冲中的数据
//将数据存储到目标文件中
//fw.flush();
fw.close();//close()方法执行前会调用一次flush方法
}
}
2.IO异常处理方式
源码:
import java.io.*;
class FileWriterDemo2
{
public static void main(String[] args) throws IOException
{
FileWriter fw=null;
try
{
fw=new FileWriter("k:\\demo.txt");
fw.write("abcde");
}
catch(IOException e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(fw!=null) //如果文件没有打开,那么没有这一句close方法将会执行
{
fw.close();
}
}
catch(IOException e)
{
System.out.println(e.toString());
}
}
}
}
3.文件的续写
源码:
/*
*演示对已有文件的数据续写
*/
import java.io.*;
class FileWriterDemo2
{
public static void main(String[] args) throws IOException
{
FileWriter fw=null;
try
{
fw=new FileWriter("demo.txt",true);
fw.write("\r\nABCDEFG");//在windows里,换行由\r\n一起来表示,不能只用\n,和linux不一样
}
catch(IOException e)
{
System.out.println(e.toString());
}
finally
{
try
{
if(fw!=null) //如果文件没有打开,那么没有这一句close方法将会执行
{
fw.close();
}
}
catch(IOException e)
{
System.out.println(e.toString());
}
}
}
}
4.文本文件的读取方式(一)
源码:
import java.io.*;
class FileReaderDemo
{
public static void main(String[] args) throws IOException
{
//创建一个文件流读取对象,和指定名称的文件相关联
//要保证该文件已经存在,如果不存在,会发生异常FileNotFoundException
FileReader fr=new FileReader("demo.txt");
int ch=0;
while((ch=fr.read())!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
{
System.out.println((char)ch);
}
}
}
5.文件的读取方式(二)
源码:
/*第二种方式:通过字符数组读取。
*/
import java.io.*;
class FileReaderDemo
{
public static void main(String[] args) throws IOException
{
//创建一个文件流读取对象,和指定名称的文件相关联
//要保证该文件已经存在,如果不存在,会发生异常FileNotFoundException
FileReader fr=new FileReader("demo.txt");
//定义一个字符数组。用于存储读到的字符
//该read(char[])返回的是读到字符个数
char[] buf=new char[3];
int num=0;
while((num=fr.read(buf))!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
{
System.out.println(new String(buf,0,num));//取从第一个到第num个字符,避免有数据不足3个字符的情况
}
}
}
6.文本文件读取练习
源码:
/*
*输出一个java文件
*/
import java.io.*;
class FileReaderTest
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("FileReaderDemo2.java");
char[] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
{
System.out.print(new String(buf,0,num));//取从第一个到第num个字符,避免有数据不足3个字符的情况
}
fr.close();
}
}
7.拷贝文本文件
源码:
//将C盘一个文本文件复制到D盘
/*
*步骤:
*1.在D盘创建一个文件,用于存储C盘文件中的数据
*2.定义读取流和C盘文件关联
*3.通过不断的读写完成数据存储
*4.关闭资源
*/
import java.io.*;
class FileReaderTest
{
public static void main(String[] args) throws IOException
{
copy_2();
}
public static void copy_1() throws IOException
{
FileReader fr=new FileReader("FileReaderDemo2.java");
FileWriter fw=new FileWriter("FileReaderDemo2.txt");
int ch=0;
while((ch=fr.read())!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
{
fw.write(ch);//取从第一个到第num个字符,避免有数据不足3个字符的情况
}
fw.close();
fr.close();
}
public static void copy_2() throws IOException
{
FileReader fr=new FileReader("FileReaderDemo2.java");
FileWriter fw=new FileWriter("FileReaderDemo2.txt");
char[] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1)//循环读取,每次读取一个字符,到达文件尾则返回-1
{
fw.write(buf,0,num);//取从第一个到第num个字符,避免有数据不足3个字符的情况
}
fr.close();
fw.close();
}
}