首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

IO流----编码----转换流

2024-12-12 来源:要发发知识网
InputStream(抽象的)字节输入流顶层父类

FileInputStream子类:
构造方法:

FileInputStream(path) 底层帮我们转File类型了,所以常用此方法
FileInputStream(file)

1.输入流如果找不到要读取的文件会抛异常
2.一定要是读取文件,如果是文件夹会抛异常

OutputStream(抽象的)字节输入流的顶层父类

子类FileOutputStream
构造方法

FileOutputStream(path) 常用此方法
fileOutputStream(file)

1.如果指定路径的文件不存在,那么会帮我们创建文件,再向文件中写入数据
2.如果指定整体路径不存在会抛异常
3.当指定文件已经存在,那么写入的数据会将原来的数据覆盖
4.流没关之前可以写多个数据

字节流不带缓冲区,flush() 没有用

FileInputStream input = new FileInputStream("F:\\aaa\\.1.txt");
FileOutputStream out = new FileOutputStream("F:\\aaa\\1.txt");
byte[] buf = new byte[1024];
int len = 0;
while((len = input.read(buf))!=-1){
     out.write(buf,0,len);
}
    input.close();
    out.close();

追加数据和换行:
FileOutputStream(String name,boolean append)
换行:
System.lineSeparator();
System.getProperty("line.separatory");
文件切割:102410242 切割2M
文件有文件头和文件尾,切割完不能完全打开,只要mp3格式可以正常打开

FileInputStream input = new FileInputStream("F:\\aaa\\视频.mp4");
byte[] buf = new byte[1024*1024*2];
int len = 0;
 int name = 1;
 while((len = input.read(buf))!=-1){
     FileOutputStream out = new FileOutputStream("F:\\aaa\\"+name+".mp4");
      out.write(buf,0,len);
       name++;
         out.close();
 }
      input.close();

文件合并:

FileOutputStream out = new FileOutputStream( "F\\bbb\\1.txt");
          for (int i = 1; i < 10; i++) {
                FileInputStream input = new FileInputStream("F:\\aaa\\" +i +".txt" );
                 byte[] buf = new byte[1204*1024*2];
                 int len = 0;
                 while((len = input .read(buf )) != -1){
                 out.write( buf, 0, len);
             }
                 input.close();
                
         }
          out.close();

在IO流中,只有字节流具备读写文件的能力
字符流 = 字节流 + 编码表

编码表:
?:表示位置字符
美国:ASCII 1个字节没有汉字
欧洲:ISO-8859-1 没有未知字符,1个字节,没有汉字
中国:GBK
国际:Unicode(一个字符2个字节)----->utf-8(中文3个字节,字母1个字节)

转换流:

硬盘---->内存 字节------>字符 字符转字符输入转换流
内存----->硬盘 字符------->字节 字节转字符输出转换流

OutputStreamWriter writer = new OutputStreamWriter( new FileOutputStream("F:\\aaa\\utf.txt" ), "utf-8" );
    writer.write( "你好");
    writer.close();
InputStreamReader reader = new InputStreamReader(new FileInputStream("F:\\aaa\\utf.txt" ),"gbk" );
    char[] buf = new char[1024];
    int len = 0;
    while((len = reader .read(buf )) != -1){
         System. out.println(new String(buf , 0, len ));
    }

模仿Scanner键盘录入:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine();
显示全文