从硬盘到内存的读取过程称为IO流;

按数据流向:

         输入流:读取数据;内存从硬盘中读取数据

         输出流:写数据;将内存中的数据写入硬盘

按数据类型:(较常用)

      字节流:字节输入输出流

      字符流:字符输入输出流

字节流的使用范围大于字符流,通常用字符流;

字节流写数据:

inputstream类-----字节输入    抽象类,是所有字节输入流的超类 

outputstream类------字节输出    抽象类,是所有字节输出流的超类

fileoutputstream extends outputstream   将数据写入文件

      fileoutputstream(Sting name);创建文件输出流以指定的名称写入文件;

   字节流写数据的三种方式:

   write(int or char  b)将指定的字节写入此文件输出流,一次只能写一个字节

  write(byte[]  b)  将b.length字节从指定的字节数组写入此文件输出流,一次写一个字节数组数据

  write(byte[]  ,int off,int len)将len字节从指定字节数组开始,从偏移量off开始写入此文件输出流,一次写一个字节数组的部分数据

 

public class fileoutput {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("java1.txt");

        fos.write('a');//这种方法只能写入字符,不能是字符串,且写入数字时会当成字符编码写入字符

        byte[] bys = {'1',97,'b',54}; //getbytes)方法可以将一个字符串转换成一个字节数组

        byte[] bys1 = "abcde".getBytes();
        fos.write(bys1);//一次写一个字节数组

        byte[] bys3 ="abcde".getBytes();
        fos.write(bys3,1,3);//一次写一个字节数组的一部分,写入bcd
            //off编号从0 开始,len表示需要写入的长度;

        fos.close();//写入后关闭输出流且释放了与此输出流相关的资源
    }
}

对于换行符,不同系统识别的字符不一样

windows :\r\n   记事本这个才能认为是换行符

linux  : \n

mac  :   \r

追加写入:

FileOutputStream fos = new FileOutputStream("java1.txt",true);
表示追加写入,true参数认为是追加写,如果不加这个参数,认为是从开头写

 

可以异常处理的字节流写数据

package filestream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class fileoutput {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos  = null;  //最外部定义,finally才能识别
        try {

            fos = new FileOutputStream("java1.txt", true);
            fos.write('a');//这种方法只能写入字符,不能是字符串,且写入数字时会当成字符编码写入字符

            byte[] bys = {'1', 97, 'b', 54}; //getbytes)方法可以将一个字符串转换成一个字节数组

            byte[] bys1 = "abcde".getBytes();
            fos.write(bys1);//一次写一个字节数组

            byte[] bys3 = "abcde".getBytes();
            fos.write(bys3, 1, 3);//一次写一个字节数组的一部分,写入bcd
            //off编号从0 开始,len表示需要写入的长度;
        }
        catch(IOException e){
            e.printStackTrace();
        }
        finally {
            try{
                assert fos != null;
                fos.close();}//写入后关闭输出流且释放了与此输出流相关的资源
            catch (IOException e){e.printStackTrace();}
        }


    }
}