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

java语言基础(81)——IO流概述、分类及基本使用

2017-07-23 21:21 721 查看
java操作流的对象都在io包下。

IO流的用途:用来处理设备之间的数据传输。

IO流的分类:

  按流向分:

      输入流(读取数据)

      输出流(写数据)

  按数据类型分:

      字符流

          字符输入流  Reader

          字符输出流  Writer

      字节流

          字节输入流  InputStream

          字节输出流  OutputStream

FileOutputStream(字节输出流)的使用:

package Stream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamDemo {

public static void main(String[] args) {
String s = "hello world";
FileOutputStream fos = null;
try {
// 如果文件不存在会自动创建
fos = new FileOutputStream("E:\\fos.txt");

// 追加写入
// FileOutputStream fos = new FileOutputStream("E:\\fos.txt",true);
fos.write(s.getBytes());

// 换行符 windows \r\n  linux \n  Mac \r
fos.write("\r\n".getBytes());
fos.write(s.getBytes());

// 为了让代码移植性更强,
//我们用java给的方法智能获取系统换行符
fos.write(System.getProperty("line.separator").getBytes());
fos.write(s.getBytes());

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
// 为了保证close一定可以执行所以放在finally中
if(fos!=null){
try {
// 释放资源
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

}

FileInputStream(字节输入流)的使用:

package Stream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileInputStreamDemo {

public static void main(String[] args) {

FileInputStream fis = null;
try {
fis = new FileInputStream("E:\\fos.txt");
// 一次读取一个字节数组
byte[] bys = new byte[1024];
int len = 0;
while((len = fis.read(bys))!=-1){
System.out.print(new String(bys,0,len));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fis!=null){	try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}}

}

}


字节缓冲区流(又称高效字节流)用法跟FileOutputStream  FileInputStream类似,但效率更高:

BufferedOutputStream  高效字节输出流

package Stream;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedOutputStreamDemo {

public static void main(String[] args) {
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(new FileOutputStream("E:\\bos.txt"));
bos.write("hello world hello java".getBytes());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(bos!=null){	try {
bos.close();
} catch (IOException e) {

e.printStackTrace();
}
}}

}

}

BufferedInputStream  高效字节输入流

package Stream;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class BufferedInputStreamDemo {

public static void main(String[] args) {
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream("E:\\bos.txt"));
byte[] bys = new byte[1024];
int len = 0;
while((len = bis.read(bys))!=-1){
System.out.print(new String(bys,0,len));
}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(bis!=null){
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

}


OutputStreamWriter  字符输出流

package Stream;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class OutputStreamWriterDemo {

public static void main(String[] args) throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new
FileOutputStream("E:\\osw.txt"));
osw.write("我喜欢java");
osw.close();
}

}


InputStreamReader  字符输入流
package Stream;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class InputStreamReaderDemo {

public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\osw.txt"));

// 读数据 方式一 一次读取一个字符
// int ch = 0;
// while((ch = isr.read())!=-1){
// System.out.print((char)ch);
// }

// 读数据 方式二 一次读取一个字符数组
char[] chs = new char[1024];
int len = 0;
while((len=isr.read(chs))!=-1){
System.out.print(new String(chs,0,len));
}

// 关闭资源
isr.close();
}

}


字符流的便捷操作类:FileWriter  和 FileReader

高效字符流:

 BufferedWriter  字符缓冲输出流  

 BufferedReader  字符缓冲输入流

用法与字节缓冲流类似。

字符缓冲流的特殊功能:插入新行(newLine)和读取一行(readLine)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息