IO流的基础概念
IO流:用于读写文件中的数据(可以读写文件,或网络中的数据)
在IO流中,读与写主要以内存为参照物进行的。
IO流按照流的方向,可以分为输入流和输出流,按照操作文件的类型,可以分为字节流和字符流。
使用流的四个步骤:找到源,打开流,操作流,关闭流。
注意:在使用完流后,必须关闭流,避免资源的浪费。
字节流的俩种基本流
字节输入流的创建格式:
FileInputStream(FIle file)//通过一个实际文件的对象来创建一个FileInputStream
FIleInputStream(String name)//通过打开一个到实际文件的地址来创建一个FileInputStream
字节输入流的基本方法:
int read()//从此输入流中读取一个数据字节,并放回 int read(byte[] b)//从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中,并返回读入的长度。 int read(byte[] b,int off,int len)//从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 void close//
字节输出流的创建格式:
FileOutputStream(File file)//创建一个向指定 File 对象表示的文件中写入数据的文件输出流 FileOutputStream(File file,boolean append)//表示是否要续写。 FileOutputStream(String name)//创建一个向具有指定名称的文件中写入数据的输出文件流。 FIleOutputStream(String name,boolean append)// 表示是否要续写。
主要方法:
void write(int c)//写入单个字节 void write(char[] obuf,int off,int len)//写入字节数组的一部分。 void flush()//刷新该流的缓冲 void close()//关闭该流
字节输出流的细节:如果路径下的文件不存在,则会自动创建一个文件。当并为指明是否续写时,会自动认为关闭续写。
运用字节流完成文件的拷贝(完整代码);
public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos =null; try { fis = new FileInputStream("D:\\javaspace\\untitled\\a.txt");//创建字节输入流的对象 fos = new FileOutputStream("D:\\javaspace\\untitled\\b.txt");//创建字节输出流的对象 int len; byte arr[] = new byte[2];//字节数组 while((len = fis.read(arr))!=-1){ fos.write(arr,0,len); } fos.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if (fos!=null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis!=null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } }
字符流的俩种基本流
字符输入流的创建格式;
FileRead(File file)//通过一个真实的文件对象来创建一个字符输入流 FileRead(String name)//通过一个真实的路径来创建一个字符输入流的对象
主要方法:
int read()// int read(char[] char,int offset,int length)//将字符读入数组中的某一部分,并返回读入数组的长度。 void close//关闭该流并释放与之关联的所有资源。
字符输出流的创建格式:
FIleWriter(File file) FileWriter(File file,boolean append) FileWriter(String name) FileWriter(String name,boolean append) //构造方法与字节输出流的构造方法效果相同
主要方法:
void write(int c)//写入单个字符 void write(char[] obuf,int off,int len)//写入字符数组的一部分。 void flush()//刷新该流的缓冲 void close()//关闭该流
字节流与字符流的差别
1、两者的组成不同: 字节流的组成:字节流是由字节组成的。 字符流的组成:字符流是由字符组成的。
2、字节流可以处理所有数据,而字符流一般只用于处理文本文件。
3、在处理 除 英文和英文符号外的其他语言,使用字节流会出现乱码的情况,因为字节流是一个字节一个字节的传递数据,像中文是由多个字节组成的,传递时会有失传的情况,而字符流的就是为了避免这种情况而出现的。