输入流(InputSteam)是超类,通过不同的子类来借用超类的方法
读取数据的原来:硬盘--内存(java程序---jvm--os--os读取数据的方法-读取文件)
创建FileInputStream对象,构造方法中绑定要读取的数据源
使用FileInputStream对象中的read方法,读取文件
read()读取文件中的一个字节并返回,读取到文件的末尾返回-1。由于read()方法每次都是读取一个字节,为了一次读取完成,使用循环语句,末尾的返回值是-1,就用while循环来实现。(len=对象.read())!=-1。(里面有三种意思:read()先读取,再把读取的字赋值给len,最后再判断是否等于-1)
释放文件
输出流(OutputStream)是超类,通过不同的子类来借用超类的方法
输出的意思就是将东西write写入文件中,也就是把东西方到硬盘中
写入的东西 会把10进制的转换称二进制在硬盘上
任意的文本编辑器,在打开文件的时候,都会查询编码表,把字节转换为字符表示(例如0-127:查询ASCII表,其他值:查询系统默认编码表(中文系统就是GBK))
如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表,如果第一个字节是负数,那么第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK)
怎么让数据追加写:使用两个参数的构造方法就可以了FileOutputStream(String name,boolean oppend)boolean oppend:追加写开关,true就会创建对象不会覆盖文件,继续在文件末尾追加数据。相反就会覆盖源文件
写入字符的方法:可以使用String类中的方法把字符串,转换为字节数组byte[] getBytes() 把字符串转换为字节数组
怎么写换行:不同的系统换行的符号不一样(windows:\r\n。Linux:/n。mac:/r。)对象.write("\r\n".getBytes())