字節流(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