Reader类
Reader类的常用子类为BufferedReader,接受Rearder对象作为参数,并对其添加字符缓冲器。
常用放法:
int read() //从输入流中读取单个字符,返回所读去的字符数据
int read(byte[]c) //从输入流中最多读取c.length个字符,保存到字符数组C中,返回实际读取的字符数
int read(byte[]c,int off,int len) //从输入流中读取len个字符,保存到字符数组C中,从off位置开始保存
void close() //关闭流
参考代码:
public class Text {
public static void main(String[] args) {
FileReader fir=null; //声明一个FileReader对象
BufferedReader br=null; //声明一个BufferedReader对象
try {fir=new FileReader("F:/DADA.txt"); //实例化FileReader对象
br=new BufferedReader(fir); //实例化BufferedReader对象
String str; //声明一个字符串接收读取的字符
while ((str=br.readLine())!=null) {
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(br!=null){br.close();} //关闭流
if(fir!=null){fir.close();}} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Writer类
Writer类的常用子类为BufferedWriter,用于将数据缓冲到字符输出流
void writer(String str) //将str字符串里包含的字符输出到指定输出流中
void writer(String str,int off,int len) //将str字符串里从off位置开始,长度为len的多个字符输出到输出流中
void close() //关闭输出流
void fiush() //刷新输出流
参考代码:
public class Text {
public static void main(String[] args) {
Writer w=null; //声明一个Writer对象
BufferedWriter bw=null; //声明一个BufferedWriter对象
w=new FileWriter("D:/DADA2.txt"); //实例化Writer对象
bw=new BufferedWriter(w); //实例化BufferedWriter对象
String str="好好学习"; //需要输出的字符串
bw.write(str);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
bw.close(); //关闭输出流
w.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
读写二进制文件(DataInputStream 与DatOutputStream)
读取文件跟FileInputStream使用的方式和方法一样,不过返回的数据类型为char类型的,所以要用char字符串数组接收;
输出文件也同样跟FileoutputStream使用方法一样;
读写二进制文件实现步骤:(1)引入相关类 (2)创建流对象
(3)调用DataInputStream对象的read()方法读取数据
(4)调用DataOutputStream对象的write()方法写数据
(5)读取写入的数据 (6)关闭流对象
参考代码:
调用public class Copy {
public static void main(String[] args) {
InputStream is=null;
DataInputStream dis=null;
OutputStream os=null;
DataOutputStream dos=null;
try {
is=new FileInputStream("D:/1.jpg");
dis=new DataInputStream(is); //实例化数据输入的对象
os=new FileOutputStream("F:/2.jpg");
dos=new DataOutputStream(os); //实例化数据输出的对象
int a; //创建一个int类型的值接收读出来的数据
while ((a=dis.read())!=-1) { //循环读取数据
dos.write(a); //循环写数据
}
System.out.println("文件已复制成功");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if (dos!=null) {
dos.close(); //关闭数据流
}if (os!=null) {
os.close(); //关闭数据流
}if (dis!=null) {
dis.close(); //关闭数据流
}if (is!=null) {
is.close(); //关闭数据流
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}