Java面向对象——IO流(字符流读取流)
面向对象
1、IO流用来处理设备之间的数据传输。
2、Java对数据的操作是通过流的方式。
3、Java用于操作流的对象都封装在IO包中。
4、流按操作数据分为两种:字节流与字符流。
5、流按流向分为:输入流,输出流。
IO
字符流的抽象基类
Reader,Writer
字节流的抽象基类
InputStrea,OutputStream
注意:由这四个类派生出来的子类名称都是以其父类名作为子类明的后缀。
既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。
那么先以操作文件为主来演示。
IO流(文本写入)
writer抽象类
abstract void
close()
关闭此流,但要先刷新它。abstract void
flush()
刷新该流的缓冲。void
write(char[] cbuf)
写入字符数组。abstract void
write(char[] cbuf, int off, int len)
写入字符数组的某一部分。void
write(int c)
写入单个字符。void
write(String str)
写入字符串。void
write(String str, int off, int len)
写入字符串的某一部分。
FileWriter类
构造方法摘要
FileWriter(String fileName)
根据给定的文件名构造一个 FileWriter 对象。
/*
需求:在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象。FileWriter。 后缀名是父类名。 前缀名是该流对象的功能。
*/
import java.io.Writer;
import java.io.FileWriter;
import java.io.IOException;
public class Test{
public static void main(String...args)throws IOException{
/*创建一个FileWriter对象,该对象一被初始化,就必须要明确被操作的文件.
而且该文件会被创建到指定目录下,如果该目录下已有同名的文件,将被覆盖。
其实该步就是明确数据要存放的目的地*/
Writer w = new FileWriter("1.Java");
/*调用writer方法,将字符串写入到流中,会抛IO异常.*/
w.write("黑马程序员——新长城");
/*刷新该流的缓冲。将数据刷新到文件中*/
//w.flush();
/*关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
将数据刷到目的地中。
和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。*/w.close();
}
}
IO流(IO异常处理方式)
import java.io.Writer;
import java.io.FileWriter;
import java.io.IOException;
public class Test{
public static void main(String...args){
Writer w = null;
try{
w =new FileWriter("1.Java");
w.write("黑马程序员——新长城");
}
catch(IOException e){
System.out.println("写入失败"+e);
}
finally{
if(w!=null){
w.close();
}
}
}
}
文件的续写
FileWriter类
构造方法摘要
FileWriter(String fileName, boolean append)
根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
/*
Windows中,换行是 \r\n。
Linux 是\n。
*/
import java.io.Writer;
import java.io.FileWriter;
import java.io.IOException;
public class Test{
public static void main(String...args){
Writer w = null;
try{
//为true表示不覆盖已有文件,并且续写
w = new FileWriter("1.Java",true);
w.write("黑马程序员——新长城");
fw.write("\r\n换行");
}
catch(IOException e){
System.out.println(e);
}
finally{
if(w!=null){
try{
w.close();
}
catch(IOException e){
System.out.println(e);
}
}
}
}
}
IO流(文本文件读取方式一)
Reader抽象类
int
read()
读取单个字符。
abstract void
close()
关闭该流并释放与之关联的所有资源。
构造方法摘要
FileReader(String fileName)
在给定从中读取数据的文件名的情况下创建一个新 FileReader。
import java.io.Reader;
import java.io.FileReader;
import java.io.IOException;
public class Test{
public static void main(String...args) throws IOException{
/*
创建一个文件读取流对象,和指定名称的文件相关联。
要保证该文件是已经存在的,如果不存在,会发生异常 FileNotFoundException
*/
Reader r = new FileReader("C:\\1.Java");
int ch =0;
while((ch=r.read())!=-1){
System.out.print((char)ch);
}
}
}
IO流(文本文件读取方式二)
Reader抽象类
int
read(char[] cbuf)
将字符读入数组。
import java.io.Reader;
import java.io.FileReader;
import java.io.IOException;
public class Test{
public static void main(String...args) throws IOException{
Reader r = new FileReader("C:\\1.Java");
char[]buf = new char[1024];
int len =0;
while((len=r.read(buf))!=-1){
sop(new String(buf,0,len));
}
}
public static void sop(Object obj){
System.out.println(obj);
}
}
IO流(文本文件读取练习)
import java.io.Reader;
import java.io.FileReader;
import java.io.IOException;
public class Test{
public static void main(String...args) throws IOException{
Reader r = new FileReader("1.Java");
char []buf = new char[1024];
for(int len =0;(len=r.read(buf))!=-1;){
sop(new String(buf,0,len));
}
}
public static void sop(Object obj){
System.out.println(obj);
}
}
IO流(文本文件写入练习)
import java.io.Writer;
import java.io.FileWriter;
import java.io.IOException;
public class Test{
public static void main(String...args) throws IOException{
Writer r = new FileWriter("1.Java");
for(int x=1;x<=5;x++){
r.write("CSDN社区"+x+"\r\n");
r.flush();
}
r.close();
}
}
IO流(拷贝文本文件)
复制的原理,其实就是将一个文件的数据存储到另一个文件中
/*
1、在C盘创建一个文件,用于存储C盘文件中的数据
2、定义读取流和C盘文件关联
3、通过不断的读写完成数据存储
4、关闭资源
*/
import java.io.IOException;
import java.io.Writer;
import java.io.Reader;
import java.io.FileWriter;
import java.io.FileReader;
public class Test{
public static void main(String... args){
Reader r =null;
Writer w =null;
try{
r = new FileReader("C:\\1.Java");
w =new FileWriter("C:\\2.Java");
char[] buf =new char[1024];
for(int len=0;(len=r.read(buf))!=-1;){
w.write(new String(buf,0,len));
}
}
catch(IOException e){
System.out.println(e);
}
finally{
try{
if(r!=null)
r.close();
}catch(IOException e){
System.out.println(e);
}
finally{
try{
if(w!=null)
w.close();
}
catch(IOException e){
System.out.println(e);
}
}
}
}
}