------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
首先感谢黑马、感谢素不相识的 毕老师
------------
第一讲 IO
IO概述
a、特点:
a.1)设备彼此的数据传输用到IO(input/outputstream)。
a.2)数据的操作整个过程一般是由流的形式完成的。
a.3)IO包中包含了操作流的类。
a.4)字节流以及字符流两种形式
b、IO流的常用基类:
b1)InputStream和OutputStream(字节流)
b2)Reader和Writer(字符流)
注以此四个类派生出来的类,前缀表功能后缀是父类
第二讲 字符流
一、简介
a、正在使用的系统的编码为其默认编码。
b、文字数据用字符流处理,媒体数据一般用字节流。
c、既然IO流是用于操作数据的,那么数据的最常见体现形式是文件。查看API,找到一个专门用于操作文件的Writer子类对象:FileWriter,后缀是父类名。前缀是功能。
二、字符流的读写
1、写入字符流step
a、FileWriter创建,一旦初始化,就有明确被操作的文件存在。若存在同名文件将被替换。这样数据存放的路径就明确下来。
b、将字符串存入到流中调用函数write(String s)。
c、注意这时只有调用flush()方法来刷新缓冲,数据方可以到达到目标文件。
d、最后再调用close()。会完成最后一次的刷新,然后关闭流资源。
close()和flush二者比较:
flush()流资源没有关闭;
但close()刷新并关闭流。
. class FileWriterDemo
{
public static void main(String[] args)
{
writerDate("abcde");//写入数据
writerFrom("zheshi:\r\nshenma");//续写数据,并附换行操作
}
//在硬盘上创建一个文件并写入指定数据
public static void writerDate(String s)
{
FileWriter fw=null;
try
{
fw=new FileWriter("demo.txt");//创建文件
fw.write(s);//将数据写入流
}
catch (IOException e)
{
throw new RuntimeException("写入失败");
}
finally
{
if(fw!=null)
try
{
fw.close();//将写入流的数据刷到指定文件内,并关闭流资源
}
catch (IOException e)
{
}
}
}
//对已有文件的数据续写指定数据
public static void writerFrom(String s)
{
FileWriter fw=null;
try
{
fw=new FileWriter("demo.txt",true);//传递一个true参数,代表不覆盖已有的文件。
fw.write(s);
}
catch (IOException e)
{
throw new RuntimeException("写入失败");
}
finally
{
try
{
if(fw!=null)
fw.close();
}
catch (IOException e)
{
}
}
}
}
import java.io.*; class FileWriterDemo { public static void main(String[] args) { writerDate("abcde");//写入数据 writerFrom("zheshi:\r\nshenma");//续写数据,并附换行操作 } //在硬盘上创建一个文件并写入指定数据 public static void writerDate(String s) { FileWriter fw=null; try { fw=new FileWriter("demo.txt");//创建文件 fw.write(s);//将数据写入流 } catch (IOException e) { throw new RuntimeException("写入失败"); } finally { if(fw!=null) try { fw.close();//将写入流的数据刷到指定文件内,并关闭流资源 } catch (IOException e) { } } } //对已有文件的数据续写指定数据 public static void writerFrom(String s) { FileWriter fw=null; try { fw=new FileWriter("demo.txt",true);//传递一个true参数,代表不覆盖已有的文件。 fw.write(s); } catch (IOException e) { throw new RuntimeException("写入失败"); } finally { try { if(fw!=null) fw.close(); } catch (IOException e) { } } }}
2、读取字符流步骤
1)文件读取流对象创建,与目标文件关联。
2)调用read()函数。read()逐个字符读取。
3)完成后调用close函数流资源关闭。
代码:
class FileReaderDemo
{
public static void main(String[] args)
{
//第一种读取方式
singleCharReader();
//第二种读取方式
arrayCharReader();
}
//第一种读取方式,单个字符读取
public static void singleCharReader()
{
FileReader fr=null;
try
{
fr=new FileReader("demo.txt");//读取文件位置和文件名
for (int ch=0;(ch=fr.read())!=-1 ; )
{
System.out.print((char)ch);
}
}
catch (IOException e)
{
throw new RuntimeException("读取失败");
}
finally
{
try
{
if(fr!=null)
fr.close();//关闭读取流资源
}
catch (IOException e)
{
}
}
}
//第二种读取方式,通过字符数组进行读取
public static void arrayCharReader()
{
FileReader fr=null;
char[] arr=new char[1024];//定义一个字符数组,用于临时存储读取的字符
try
. {
//读取一个.java文件,并打印在控制台上。
fr=new FileReader("FileReaderDemo.java");
for (int len=0;(len=fr.read(arr))!=-1 ; )
{
//显示字符数组的字符个数
System.out.print(new String(arr,0,len));
}
}
catch (IOException e)
{
throw new RuntimeException("读取失败");
. }
finally
{
if(fr!=null)
try
{
fr.close();
}
catch (IOException e)
{
}
}
}
}
(毕老师教学练习题)
import java.io.*;class FileReaderDemo{ public static void main(String[] args) { //第一种读取方式 singleCharReader(); //第二种读取方式 arrayCharReader(); } //第一种读取方式,单个字符读取 public static void singleCharReader() { FileReader fr=null; try { fr=new FileReader("demo.txt");//读取文件位置和文件名 for (int ch=0;(ch=fr.read())!=-1 ; ) { System.out.print((char)ch); } } catch (IOException e) { throw new RuntimeException("读取失败"); } finally { try { if(fr!=null) fr.close();//关闭读取流资源 } catch (IOException e) { } } } //第二种读取方式,通过字符数组进行读取 public static void arrayCharReader() { FileReader fr=null; char[] arr=new char[1024];//定义一个字符数组,用于临时存储读取的字符 try { //读取一个.java文件,并打印在控制台上。 fr=new FileReader("FileReaderDemo.java"); for (int len=0;(len=fr.read(arr))!=-1 ; ) { //显示字符数组的字符个数 System.out.print(new String(arr,0,len)); } } catch (IOException e) { throw new RuntimeException("读取失败"); } finally { if(fr!=null) try { fr.close(); } catch (IOException e) { } } }}
()
/*
. 需求:
将c盘一个文本文件复制到e盘、
复制的原理:
其实就是将c盘下的文件数据存储到e盘的一个文件中。
步骤:
1、在e盘创建一个文件。用于存储c盘文件中的数据。
2、定义读取流和c盘文件关联。
3、通过不断的读写完成数据存储。
4、关闭资源。
*/
import java.io.*;
class ReaderWriterTest
{
publicstatic void main(String[] args)
{
//调用复制方法
//copy_1();
copy_2();
}
//用第一种读取方式进行复制
publicstatic void copy_1()
{
FileWriterfw=null; . FileReaderfr=null;
try
{
//关联读取和写入的文件
fw=newFileWriter("E:\\HelloWorld.java");
fr=newFileReader("C:\\HelloWorld.java");
for(int ch=0;(ch=fr.read())!=-1 ; )
{
fw.write(ch);//一个字符一个字符写入
}
}
catch(IOException e)
{
thrownew RuntimeException("读写失败");
. }
finally
{
if(fr!=null)
try
{
fr.close();//对读取流和写入流分别关闭
}
catch(IOException e)
{ }
if(fw!=null)
try
{
fw.close();
}
catch(IOException e)
{
}
}
}
//第二种读取方式进行复制
publicstatic void copy_2()
{
FileWriterfw=null;
FileReaderfr=null;
try
{
//关联读取和写入的文件
fw=newFileWriter("E:\\HelloWorld.java");
fr=newFileReader("C:\\HelloWorld.java");
char[]arr=new char[1024];
for(int len=0;(len=fr.read(arr))!=-1 ; )
{
fw.write(arr,0,len);//利用数组一次存入数组中的字符
}
}
catch(IOException e)
{
thrownew RuntimeException("读写失败");
}
finally
{
try
{
if(fr!=null)
fr.close();
}
catch(IOException e)
{
}
finally
{
if(fw!=null)
try
{
fw.close();
}
catch(IOException e)
{
}
}
. }
}
}