字节流
字节输入流:
-
概念解释:数据通过键盘进入程序或者将文本文件的数据输入程序(程序外部的数据进入程序)
-
三要素:数据源 数据流管道 开关
-
InputStream:字节输入流祖宗类
- FileInputStream(细管道):调用一次就读取一个字节
- FileOutputStream(细管道):调用一次就写入一个字节
- BufferedInputStream(粗管道)
- BufferedInputStream(粗管道)
-
一个字节一个字节读取
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class IODemo { public static void main(String[] args) { try { //1.1在文件和程序之间铺管道(第一种方式) FileInputStream files = new FileInputStream("C:\\Users\\chai\\Desktop\\cdg.txt"); //1.2在文件和程序之间铺管道(第二种方式)这种更好 灵活 //File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt"); //if(file1.exists()&&file1.length()>0){ //FileInputStream files = new FileInputStream(file1); //}else{ // System.out.println("文件不存在或者文件为空"); // } //2.开水龙头 int ch1=files.read();//读取一个字节 int ch2=files.read();//读取一个字节 int ch3=files.read();//读取一个字节 int ch4=files.read();//读取一个字节 System.out.println("ch1="+(char)ch1);//强制转换 System.out.println("ch2="+(char)ch2); System.out.println("ch3="+(char)ch3); System.out.println("ch4="+ch4); //3.关闭字节流 files.close(); } catch (Exception e) { e.printStackTrace(); } } }
-
一次性全部读取
package FileDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class IODemo { public static void main(String[] args) { try { //1.1在文件和程序之间铺管道(第一种方式) FileInputStream files = new FileInputStream("C:\\Users\\chai\\Desktop\\cdg.txt"); //1.2在文件和程序之间铺管道(第二种方式)这种更好 灵活 //File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt"); //if(file1.exists()&&file1.length()>0){ //FileInputStream files = new FileInputStream(file1); //}else{ // System.out.println("文件不存在或者文件为空"); // } //2.开水龙头 //2.1一次全部读取 int ch=0; while(files.read()!=-1){ ch=files.read(); System.out.println((char)ch); } //3.关闭字节流 files.close(); } catch (Exception e) { e.printStackTrace(); } } }
ANSI中一个英文字符占一个字节
UTF-8中一个中文字符占3个字节
GB2312(国标)中一个中文字符占2个字节
字节输出流:数据通过电脑进行显示
-
概念解释:程序外内部的数据输出到程序外部
-
三要素:数据源 管道 开关
-
OutputStream:输出祖宗类
- FileOutputStream()
- BufferedOutputStream()
代码演示:
package FileDemo; import java.io.FileOutputStream; public class IODemo01 { public static void main(String[] args) { //1.创建数据源 String data="hello java so easy!"; try { //架管道 FileOutputStream fos = new FileOutputStream("C:\\Users\\chai\\Desktop\\cdg.txt",true);//后面的参数为true则追加,后面的参数为false则覆盖 //data.getBytes()将字符串转换成字符数组 //开水龙头 fos.write(data.getBytes()); //关水龙头 fos.close(); } catch (Exception e) { e.printStackTrace(); } } }