IO流
1、IO流用来处理设备之间的数据传输。输入输出流针对内存而言:将外设中的数据读取到内存中:输入;
将内存的数据写入到外设中:输出。
2、按照操作数据分为两种:
字节流:字节流可以处理所有数据。以字节为单位传输数据的流,如文本、音频,视频,图片。
两大父类——
InputStream类: 输入字节流
OutputStream类:输出字节流
字符流:字节流读取文字字节数据后不直接操作,而是先查指定的编码表;获取对应的文字再对这个文字进行操作。
简单地说:字符流=字节流+编码表
两个父类——
Reader类:字符输入流
Writer类:字符输出流
3、创建一个可以往文件中写入字符数据的字符输出流对象。
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo {
private static final String LINK_SEPARATOR = System.getProperty("line.separator");//换行
public static void main(String args[]) throws IOException{
//创建一个可以往文件中写入字符数据的字符输出流对象。
/**
* 既然是往一个文件中写入文字数据,那么在创建对象时,就必须明确该文件。
* 如果文件不存在,那会自动创建。
* 如果文件存在,则会被覆盖。
*
* 如果构造函数中加入true,可以实现对文件进行续写。
*/
FileWriter fw =new FileWriter("demo.txt",true);//加入true后可以实现对文件的续写
/*
* 调用writer对象中的write(string)写入数据。
*
* 其实数据写入到了临时存储缓冲区中。
*
*/
fw.write("adce"+LINK_SEPARATOR+"dsfbv");
/*
* 进行刷新,将数据直接写到目的地中。
*/
fw.flush();
}
}
4、创建读取字符数据的流对象。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
public static void main (String args[]) throws IOException{
//1,创建读取字符数据的流对象。
/*
* 在创建读取流对象时,必须要明确被读取的文件。一定要明确该文件是存在的。
*
* 用一个读取流,关联一个已存在文件。
*
*/
FileReader fr =new FileReader("demo.txt");
//用Reader中的read方法读取字符。
int ch =0;
while((ch=fr.read())!=-1){
System.out.println((char)ch);
}
fr.close();
}
}
5、使用read(char【】)读取文本文件数据。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo2 {
public static void main(String args[]) throws IOException{
FileReader fr= new FileReader("demo.txt");
/*
* 使用read(char【】)读取文本文件数据。
*
* 先创建字符数组。
*
*/
char[] buf =new char[1024];
int len =0;
while((len=fr.read(buf))!=-1){
System.out.print(new String(buf,0,len));
}
}
}
6、将c盘的一个文本文件复制到d盘;方法一:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/*
* 需求:将c盘的一个文本文件复制到d盘
*
* 思路:
* 1,需要读取源;
* 2,将督导的源数据写入到目的地;
* 3,既然是操作文本数据,使用字符流。
*
*/
public class CopyTest03 {
public static void main(String[] args) throws IOException {
//1,读取一个已有的文本文件,使用字符读取流和文件相关联。
FileReader fr=null;
try {
fr=new FileReader("IO流");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//2,创建一个目的,用于存储读到的数据
try {
FileReader fw= new FileReader("copyText");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//3.频繁的读写操作
int ch =0;
while((ch=fr.read())!=-1){
try {
fr.wait(ch);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//4,关闭流资源
fr.close();
}
}
7、将c盘的一个文本文件复制到d盘;方法二:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyTest04 {
private static final int BUFFER_SIZE = 1024;
public static void main(String[] args) {
Runtime r=Runtime.getRuntime();
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("demo.txt");
fw = new FileWriter("copyText");
// 创建一个临时容器,用于缓存读取到的字符。
char buf[] = new char[BUFFER_SIZE];
// 定义一个变量记录读取到的字符数,其实就是往数组里装的字符个数
int len = 0;
while ((len = fr.read()) != -1) {
fw.write(buf, 0, len);
}
} catch (Exception e) {
throw new RuntimeException("读写失败");
} finally {
if(fr!=null)
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fw!=null)
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
|
|