----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
IO流用来处理设备之间的数据传输
java对数据的操作是通过流的方式
java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流
流按流向分为:输入流、输出流。
内存和硬盘中的数据 体现形式都是字节
为了方便处理文本数据,出现了字符流
因为:
汉字对应的二进制表:GB2312
扩容后,叫做GBK
后来又扩容。。不断出现不同的
然后出现了国际标准码表:unicode码表(无论什么都用两个字节表示 16个二进制)
优化后叫做:utf-8(一个到三个字节表示)
IO流常用基类
字节流的抽象类型:InputStream,OutputStream
字符流的抽象基类:Reader,Writer
注:由这四个类派生出来的子类名称都是其父类名作为子类名的后缀。
如:InputStream的子类:FileInputStream
FileWriter
字符流和字节流:
字节流两个基类:InputStream、OutputStream
字符流两个基类:Reader、Writer
既然IO流是用来操作数据的,那么数据的最常见体现形式是:文件。
import java.io.*;
class FileWriterDemo
{
public static void main(String[] args) throws IOException
{
/*创建一个FileWriter对象,该对象一被初始化就必须要声明被操作的文件。且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。其实该步就是在明确数据要存放的目的地。*/
FileWriter fw=new FileWriter("demo.txt");
fw.write("abcde");
/*调用write方法,将字符串写入到流中。*/
fw.flush();
/*刷新流对象中的缓冲中的数据,将数据刷到目的地中。*/
fw.write("haha"); //继续写
fw.flush();
fw.close();
/*关闭文件,关闭前会刷新,但关闭后无法再继续操作流 */
}
}
IO异常处理方式
import java.io.*;
FileWriter fw=null;
try{
FileWriter fw=new FileWriter("demo.txt");
fw.write("abcdefg");
}
catch(IOException e)
{
System.out.println(e.toString());}
finally
{
if(fw!=null)
try{fw.close();}
catch(IOException e){}
}
IO流,文件的续写
FileWriter fw=new FileWriter("demo.txt",true);
windows中换行是\r\n
linux中换行是\n
10-文本文件读取方式
FileNoFoundException文件未找到异常
读取方式第一种:
FileReader fr=new FileReader(“demo.txt”)
int ch=0;
while((ch=fr.read())!=-1)
{
System.out.println((char)ch);
若到流的末尾,返回-1
}
11 文件读取方式二
通过字符数组进行读取:
main..throws IOException
FileReader fr=new FileReader("demo.txt");
char[] buf=new char[1024];
int num=0;
while((num=fr.read(buf))!=-1)
{
System.out.print(new String(buf,0,num));
}
IO流,拷贝文本文件
复制的原理就是将文件数据存储到其他文件中
第一种:
public static void copy_1()
{
FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");
FileReader fr=new FileReader("RuntimeDemo.java");
int ch=0;
while((ch=fr.read())!=-1)
{fw.write();}
fw.close();
fr.close();
}
第二种:
FileWriter fw=null;
FileReader fr=null;
try
{
fw=new FileWriter(SystemDemo_copy.txt);
fr=new FileReader("System.java");
char[] buf=new char[1024];
int len=0;
while((len=fr.read(buf))!=-1)
{
fw.write(new String(buf,0,len));
}
}
catch(IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
if(fr!=null)
try{fr.close();}
catch{IOException e}
{...}
if(fw!=null)
try{fw.close();}
catch{IOException e}
{...}
//调用流越多,关的也越多
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------