您的位置:首页 > 编程语言 > Java开发

JAVA IO 流小结

2016-08-11 12:05 309 查看
字节流(InputStream,OutputStream)

字符流(Writer,Reader)

如是要复制一个文件,这个文件是一个文本文件话,则可以采用字符流各字节流都可以,否则只能用字节流,字节流复制文件常用的四种方式,

/*
方式一:一次读一个字节
*
private static void Method1() throws IOException {
// TODO Auto-generated method stub
File file = new File("d:\\src.txt");
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos  = new FileOutputStream("d:\\des.txt");

int i = 0;
while((i = fis.read()) != -1){
fos.write(i);
}

fis.close();
fos.close();
}


/**
* 方式二:一次读写一个字节数组
* @throws Exception
*/
private static void Method2() throws Exception {
// TODO Auto-generated method stub
File file = new File("d:\\src.txt");
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos  = new FileOutputStream("d:\\des.txt");

byte bytes[] = new byte[1024];
int len = 0;

while((len = fis.read(bytes)) != -1){
fos.write(bytes, 0, len);
}
fis.close();
fos.close();
}


/**方式三:
* 使用BufferedInputStream和BufferedOutputStream  一次读写取一个字节
* @throws Exception
*/
private static void Method3() throws Exception {
// TODO Auto-generated method stub
File file  = new File("d:\\src.txt");
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\des.txt"));
int i = 0;
while((i=bis.read()) != -1){
bos.write(i);
}

bos.flush();
bis.close();
bos.close();
}


/**
* 方式四: 使用BufferedInputream 和 BufferedOutputStream 一次读写一个字节数组
* @throws Exception
*/
private static void Method4() throws Exception {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
File file = new File("d:\\src.txt");
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\des.txt"));
int len = 0;
byte bytes[] = new byte[1024];
while ((len = bis.read(bytes)) != -1) {
bos.write(bytes,0,len);
}

bos.flush();
bis.close();
bos.close();
}


以上就是字节流复制这件的四种方式

而使用字符流来复制这个文本文件的话,则有五种方式:

/**
* 方式一:使用FileRead 和 FileWriter 一次读写一个字符
* @throws Exception
*/
private static void Method1() throws Exception {
// TODO Auto-generated method stub
File file = new File("d:\\src.txt");

FileWriter fw = new FileWriter("d:\\des.txt");
FileReader fr = new FileReader(file);

int i;
while((i = fr.read()) != -1){
fw.write(i);
}
fw.close();
fr.close();
}


/**
* 方式三使用 BufferedReader 和  BufferedWriter (缓存技术) 一次读写一个字符
* @throws Exception
*/
private static void Method3() throws Exception {
// TODO Auto-generated method stub
File file = new File("d:\\src.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

int i = 0;
while((i = br.read()) != -1){
bw.write(i);
}
bw.flush();
br.close();
bw.close();
}


/**
* 方式四使用 BufferedReader 和  BufferedWriter (缓存技术) 一次读写一个字符数组
* @throws Exception
*/
private static void Method4() throws Exception {
// TODO Auto-generated method stub

// TODO Auto-generated method stub
File file = new File("d:\\src.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

int len=0;
char c[] = new char[1024];
while((len = br.read(c)) != -1){
bw.write(c, 0, len);
}
bw.flush();
br.close();
bw.close();
}


/**
* 方式五使用 BufferedReader 和  BufferedWriter (缓存技术) 一次读写一行(以\r结末)数据
* @throws Exception
*/
private static void Method5() throws Exception {
// TODO Auto-generated method stub
File file = new File("d:\\src.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\des.txt"));

String str="";
while((str = br.readLine()) != null){
bw.write(str);;
bw.newLine();
}
bw.flush();
br.close();
bw.close();


数据操作流:

DataInputStream /DataOutputStream

内存操作流:

ByteArrayInputStream

CharArrayInputStream

StringReader/StringWriter

和并流:

SequenceInputStream

序列化流:

ObjectInputStream

Properties
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: