IO流
IO流是用来读写数据的,流使用完就要释放资源,(1024*8)Java默认较好存储单元
I :intput 把硬盘文件中的数据读入到内存的过程,称:输入 负责读
O:output 把内存中的数据写出到硬盘文件的过程,称:输出 负责写
IO流分类
Windows文件不区分大小写
文件字节输入流:FileInputStream
以内存为基准,把磁盘文件中的数据以字节的形式读取到内存中
构造对象
读取方法
public class Demo { public static void main(String[] args) throws IOException { FileInputStream fis1 = new FileInputStream(new File("day11\\abc.txt")); System.out.println((char) (fis1.read())); int b;//单字节循环读文本 while ((b=fis1.read())!=-1){ System.out.println((char)b); } fis1.close(); System.out.println("------------"); FileInputStream fis2 = new FileInputStream("day11\\DEF.txt"); System.out.println((char)(fis2.read())); int len;//字节数组循环读文本 byte[] bs = new byte[2]; while ((len = fis2.read(bs))!=-1){ System.out.println(new String(bs,0,len)); } fis2.close(); } }
1.如何使用字节输入流读取中文内容输出不乱码呢?
定义一个与文件一样大或者大于的字节数组,一次性读取完文件的全部字节2.直接把文件数据全部读取到一个字节数组可以避免乱码,是否存在问题?
如果文件过大,字节数组可能引起内存溢出一个字节一个字节读取效率较慢
一个字节数组一个字节数组读取效率提升
读取中文字符会乱码
文件字节输出流:FileOutputStream
以内存为基准,把内存中的数据以字节的形式写出到磁盘文件中去的流
构造对象
写出方法
刷新关闭方法
public class Demo { public static void main(String[] args) throws IOException { FileOutputStream fos1 = new FileOutputStream(new File("day11\\dzz1.txt")); FileOutputStream fos1_1 = new FileOutputStream(new File("day11\\dzz1_1.txt"),true); FileOutputStream fos2 = new FileOutputStream("day11\\dzz2.txt"); FileOutputStream fos2_2 = new FileOutputStream("day11\\dzz2_2.txt",true); fos1.write(65);//写入一个字节 for (int i = 0 ; i < 10 ;i++) { fos1_1.write(97); } byte[] bs = {'a','b','c','d'}; fos2.write(bs);//写入一个字节数组 fos2.flush(); fos2.write("\r\n".getBytes()); fos2.write(bs,1,2); fos1.close(); fos1_1.close(); fos2.close(); fos2_2.close(); } }
fos1.write("\r\