IO流-字符流、字节流使用模板
使用之前
1.使用IO流之前,首先要弄清楚要操作的文件是什么类型
2.是字符就用字符流,是字节就用字节流
3.使用缓冲流可以提高效率
4.使用完之后必须关闭流,不然不会生效
字符流
/**
* 字符输入流连续读、读一行
* 字符输出流 将读到的数据写入文件
*/
public static void bufferedReaderAndWriter(){
String oldPath = "d:\\a.txt";
String newPath = "d:\\b.txt";
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
char[] chars = new char[1024];
int len;
try {
bufferedReader = new BufferedReader(new FileReader(oldPath));
bufferedWriter = new BufferedWriter(new FileWriter(newPath));
//字符流读一行
//bufferedReader.readLine();
//字符流连续读
while ((len = bufferedReader.read(chars)) != -1){
//字节流写入
bufferedWriter.write(new String(chars,0,len));
bufferedWriter.newLine();
}
System.out.println("传输完毕");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(bufferedReader != null){
bufferedReader.close();
}
if(bufferedWriter != null){
bufferedWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流
/**
* 字节输入流读取二进制文件
* 字节输出流 将读到的数据写入文件
*/
public static void bufferedInputStreamAndOutputStream(){
String oldPath = "d:\\cloudmusic\\cardigan - Taylor Swift.mp3";
String newPath = "d:\\b.mp3";
int len;
byte[] bytes = new byte[1024];
BufferedInputStream bufferedInputStream =null;
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream(oldPath));
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(newPath));
//字节流一次读1024个字节
while ((len = bufferedInputStream.read(bytes)) != -1){
bufferedOutputStream.write(bytes,0,len);
}
System.out.println("传输完毕");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(bufferedInputStream != null){
bufferedInputStream.close();
}
if(bufferedOutputStream != null){
bufferedOutputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}