1 字节流 换行 字节输入流 复制图片
write();flush();close(); 输出流 FileOutputStream FileInputStream 该类是文件的输入流 从文件中读取数据 read();字节的输入流
java.io.InputStream 是所有字节流输入流的超类
read(); 读取下一个字节 read(byte[] bytes); close(); FileInputStream extends InputStream FileInputStream 文件字节输入流 作用:把硬盘上的数据 读取到内存里 如何用: FileInputStream(String name); String name 是路径 FileInputStream(File name); 字节输入流的使用步骤(重点) 1 创建FileInputStream对象 构造方法中要绑定读取的数据源 2 使用对象 read() 读文件 3 释放资源2 字符流 输入 输出 异常处理(1.7 1.9)
GBK 一个汉字 两个字节utf-8 一个汉字是三个字节
字符输入流 Reader —>java.io Reader
close(); read(); FileReader extends Reader3 Properties 重点
4 缓冲流—》提高效率
具体分析方法步骤及举例: package cn.kgc.demo01.InputStream;
import java.io.FileInputStream; import java.io.IOException;
/**
字节的输入流java.io.InputStream 是所有字节流输入流的超类 read(); 读取下一个字节 read(byte[] bytes); close(); FileInputStream extends InputStream FileInputStream 文件字节输入流 作用:把硬盘上的数据 读取到内存里 如何用: FileInputStream(String name); String name 是路径 FileInputStream(File name); 字节输入流的使用步骤(重点) 1 创建FileInputStream对象 构造方法中要绑定读取的数据源 2 使用对象 read() 读文件 3 释放资源*/
public class Demo01InputStream { public static void main(String[] args)throws IOException { // 1 创建FileInputStream对象 构造方法中要绑定读取的数据源 FileInputStream fis = new FileInputStream("d:\\bobo.txt"); // 2 s使用对象 read() 读文件 // int len = fis.read(); // int len1 = fis.read(); // int len2= fis.read(); // System.out.println(len); // System.out.println(len1); // System.out.println(len2); /* * 读取是一个重复过程 用循环 fis.read(); 读不到返回-1 * */ int len = 0; while((len=fis.read())!=-1){ System.out.println(len); } // 3 释放资源 fis.close(); } }步骤: 1 创建输入流对象 读的数据源 2 创建输出流对象 写入的目的 3 使用字节输入流中 read 读取文件 4 使用字节输出流 write 写到目的文件中 5 释放资源 先开的后关
public class Demo03Copy { public static void main(String[] args) throws IOException{ long s = System.currentTimeMillis(); //1 创建输入流对象 读的数据源 FileInputStream fis = new FileInputStream("d:\\kgc.jpg"); //2 创建输出流对象 写入的目的 FileOutputStream fos = new FileOutputStream("D:\\my_java\\kgc.jpg"); //3 使用字节输入流中 read 读取文件 // int len =0; // while((len=fis.read())!=-1){ // //4 使用字节输出流 write 写到目的文件中 // fos.write(len); // } byte[] bytes=new byte[1024]; int len=0; while((len=fis.read(bytes))!=-1){ fos.write(bytes,0,len); } //5 释放资源 先开的后关 long ss = System.currentTimeMillis(); fos.close(); fis.close(); System.out.println("复制图片用了"+(ss-s)+"毫秒"); } }``package cn.kgc.Demo02.Reader;
import java.io.FileWriter; import java.io.IOException;
java.io.Writer :字符输出流 抽象类write();flush();close();FileWriter extends OutputStreamWriter extends Writer作用 :将内存中的数据 写入到文件中步骤 1 创建FileWriter对象 数据目的地 2 用对象中的方法write() 3 flush()--->将缓冲区当中数据 写到文件中 4 释放资源 flush();和 close()区别 flush() 刷新 流对象可以继续使用 close();刷新缓冲区 然后通过释放资源的方式 流不能再使用 public class Demo02Writer { public static void main(String[] args) throws IOException{ FileWriter fw = new FileWriter("d:\\d.txt"); fw.write(97); fw.write("我爱java"); fw.flush(); fw.close(); } }字节缓冲输出流 BufferedOutputStream extends OutputStream close(); flush(); write(); 使用步骤 1 创建FileOutputStream 对象 2 创建 BufferedOutputStream对象 3 使用 BufferedOutputStream中的方法 write(); 写到缓冲区 4 使用 BufferedOutputStream中的方法 flush(); 5 释放
public class Demo01BufferedOutputStream { public static void main(String[] args)throws IOException { // 1 创建FileOutputStream 对象 FileOutputStream fos = new FileOutputStream("d:\\ruirui.txt"); // * 2 创建 BufferedOutputStream对象 BufferedOutputStream bos = new BufferedOutputStream(fos); // * 3 使用 BufferedOutputStream中的方法 write(); 写到缓冲区 bos.write("我把数据写入到内部缓冲区".getBytes()); // * 4 使用 BufferedOutputStream中的方法 flush(); bos.flush(); // * 5 释放 bos.close(); }read(); close(); 构造方法 new BufferedInputStream(InputStream in); //用缓冲流读取数据的步骤 1 创建FileInputStream对象 2 创建BufferedInputStream对象 3 调用read(); 4 释放资源
public class Demo02BufferedInputStream { public static void main(String[] args) throws IOException{ // 1 创建FileInputStream对象 FileInputStream fis = new FileInputStream("d:\\ruirui.txt"); // 2 创建BufferedInputStream对象 BufferedInputStream bis = new BufferedInputStream(fis); // 3 调用read(); byte[] bytes = new byte[1024]; int len= 0; while((len=bis.read(bytes))!=-1){ System.out.println(new String(bytes,0,len)); } // 4 释放资源 bis.close(); }