今天学习了输入输出流中的几个类,1、InputStream类(抽象类)2、FileInputStream类(InputStream类的子类)3、OutputStream类(抽象类)4、FileOutputStream类(OutputStream类的子类)5、Reader类(抽象类)6、InputStreamReader类(Reader类的子类)7、FileReader类(InputStreamReader类的子类)8、BufferedReader类(Reader类的子类)9、Writer类(抽象类)10、OutputStreamWriter类(Writer类的子类)11、FileWriter类(OutputStreamWriter类的子类)12、BufferedWriter类(Writer类的子类)
流是一组有序的数据序列
以先进先出方式发送信息的通道
int read( )
int read(byte[] b)
int read(byte[] b,int off,int len)
void close( )
int available():可以从输入流中读取的字节数目
FileInputStream(File file)
FileInputStream(String name)
引入相关の类
import java.io.IOException;
import java.io.FileInputStream;
构造文件输入流
FileInputStream fis= new FileInputStream("c:\\test.txt");
读取文本文件的数据
fis.available();
fis.read();
关闭文件流对象
fis.close();
- public static void main(String[] args) throws IOException {
- //创建对象
- FileInputStream fis = new FileInputStream("f:/a.txt");
-
- //读取数据,将读取到的数据存储在声明的数组中
- byte[] bytes = new byte[1024];
- int num=fis.read(bytes);
- System.out.println(num);
- //遍历数组获取读取到的数据
- for (int i = 0; i < num; i++) {
- System.out.print((char)bytes[i]);
- }
- //数据读取完毕之后,关闭流
- fis.close();
- }
void write(int c)
void write(byte[] buf)
void write(byte[] b,int off,int len)
void close()
void flush():强制把缓冲区的数据写到输出流中
FileOutputStream (File file)
FileOutputStream(String name)
FileOutputStream(String name,boolean append)
1.前两种构造方法在向文件写数据时将覆盖文件中原有的内容
2.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件
引入相关の类
import java.io.IOException;
import java.io.FileOutputStream;
构造文件输出流
FileOutputStream fos = new FileOutputStream("text.txt");
读取文本文件的数据
String str ="好好学习Java";
byte[] words = str.getBytes();
fos.write(words, 0, words.length);
关闭文件流对象
fos.close();
- //创建FileOutputStream类对象
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream("F:/a.txt", true);
- // 准备数据
- String strs = "asdfgfhjk";
- // 将字符串strs转换成字节数组
- byte[] bytes = strs.getBytes();
- //开始写数据
- fos.write(bytes);
- System.out.println("文件写入完毕");
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- fos.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
int read( )
int read(char[] c)
read(char[] c,int off,int len)
void close( )
InputStreamReader(InputStream in)
InputStreamReader(InputStream in,String charsetName)
- System.out.println(System.getProperty("file.encoding"));
- //创建File类对象
- File file = new File("F:/a.txt");
- //创建InputStream类的引用(InputStream是一个抽象类,无法实例化,可以创建其子类对象)
- InputStream is=null;
- //创建InputStreamReader类对象
- InputStreamReader isr=null;
- try {
- is = new FileInputStream(file);
- isr = new InputStreamReader(is, "utf-8");
- char[] chs = new char[1024];
- int num=isr.read(chs);
- for (int i = 0; i < num; i++) {
- System.out.print(chs[i]);
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- isr.close();
- is.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
FileReader(File file)
FileReader(String name)
该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型
System.out.println(System.getProperty("file.encoding")); 获得本地平台的字符编码类型
引入相关的类
import java.io.Reader;
import java.io.FileReader;
import java.io.IOExceprion;
创建FileReader对象
Reader fr= new FileReader("D:\\myDoc\\简介.txt");
读取文本文件的数据
fr.read();
关闭相关的流对象
fr.close();
- //创建对象,File类对象只能按照本地平台的编码格式读取文件,如果文件编码和本地平台不一样,会出现乱码的现象
- FileReader fr =null;
- try {
- fr = new FileReader("F:/a.txt");
- char[] chs = new char[1024];
- //读取数据
- int num=fr.read(chs);
- for (int i = 0; i < num; i++) {
- System.out.println(chs[i]);
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- fr.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
BufferedReader类是Reader类的子类
BufferedReader类带有缓冲区
按行读取内容的readLine()方法
BufferedReader常用的构造方法
BufferedReader(Reader in)
子类BufferedReader特有的方法
readLine()
write(String str)
write(String str,int off,int len)
void close()
void flush()
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out,String charsetName)
FileWriter (File file)
FileWriter (String name)
该类只能按照本地平台的字符编码来写数据,用户不能指定其他的字符编码类型
引入相关的类
import java.io.Reader;
import java.io.FileWriter;
import java.io.IOException;
创建FileReader对象
Writer fw= new FileWriter("D:\\myDoc\\简介.txt");
写文本文件
fw.write();
关闭相关的流对象
fw.close();
- Writer writer=null;
- BufferedWriter bw=null;
- try {
- writer = new FileWriter("f:/demo.txt",true);
- bw = new BufferedWriter(writer);
- //先向文件中插入一个换行
- bw.newLine();
- bw.write("sahdk");
- bw.newLine();
- bw.write("dsjlfsda");
- System.out.println("数据写入完毕");
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- bw.close();
- writer.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
BufferedWriter类是Writer类的子类
BufferedWriter类带有缓冲区
BufferedWriter常用的构造方法
BufferedWriter(Writer out)
使用BufferedWriter写文件
引入相关的类
import java.io.FileWriter ;
import java.io.BufferedWriter ;
import java.io.IOException;
创建BufferedWriter对象和fileWriter对象
FileWriter fw=new FileWriter("C:\\myTest.txt");
BufferedWriter bw=new BufferedWriter(fw);
调用write()方法写数据
bw.write("hello");
流对象的清空和关闭flush()和close()
bw.flush();
fw.close();