java io流
Reader
FileReader
BufferReader
PipeReader
InputStreamReader
Writer
FileWriter
BufferWriter
PipeWriter
OutputStreamWriter
InputStream
FileInputStream
FilterInputStream
BufferedInputStream
ObjectInputStream
OutputStream
FileOutputStream
FilterOutputStream
BufferedOutputStream
ObjectOutputStream
凡是后面带有Reader,Writer都是字符流,后面为Stream都是字节流,而其中的 InputStreamReader,OutputStreamWriter 是作为字符流与字节流的桥梁,所以字节流可以转换为字符流,在应用中,字符流一般读取文件内容是以字符存在,如文本文件,而字节流,是为了读取内容为字节的文件,如图片文件
代码示例:
用于copy文件
public class IoTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String srcPath = "F:\\dvbs_gui_object_scan.txt";
String destPath = "F:\\2.txt";
//String srcPath = "F:\\title_logo_onestar.jpg";
//String destPath = "F:\\1.jpg";
copyFile(destPath,srcPath);
}
private static void copyFile(String destPath, String srcPath) {
// TODO Auto-generated method stub
File srcFile = new File(srcPath);
if(!srcFile.exists()){
System.out.println("file is not exists");
return;
}
File destFile = new File(destPath);
if(!destFile.exists()){
try {
destFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(srcPath.endsWith(".txt")){
FileReader fileReader = null;
FileWriter fileWriter = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
fileReader = new FileReader(srcFile);
fileWriter = new FileWriter(destFile);
br = new BufferedReader(fileReader);
bw = new BufferedWriter(fileWriter);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
char[] buffer = new char[1024];
int len = 0;
try {
while((len=br.read(buffer))!=-1){
bw.write(buffer, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(fileReader!=null){
fileReader.close();
}
if(br!=null){
br.close();
}
if(bw!=null){
bw.close();
}
if(fileWriter!=null){
fileWriter.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(srcFile);
fos = new FileOutputStream(destFile);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedInputStream bips = null;
BufferedOutputStream bops = null;
bips = new BufferedInputStream(fis);
bops = new BufferedOutputStream(fos);
byte[] buffer = new byte[1024];
int len = 0;
try {
while((len = bips.read(buffer))!=-1){
bops.write(buffer, 0, len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if(fis!=null){
fis.close();
}
if(bips!=null){
bips.close();
}
if(bops!=null){
bops.close();
}
if(fos!=null){
fos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
其中缓冲流的作用是提高速度;以空间换时间
本文详细介绍了Java中的IO流,包括字符流与字节流的区别、常用流类的使用方法及其实现原理。通过示例代码展示了如何使用这些流来复制不同类型的文件,如文本文件和图片文件,并解释了缓冲流在提高读写效率方面的作用。
1139

被折叠的 条评论
为什么被折叠?



