美文网首页java随笔
IO流----编码----转换流

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

作者: 71150ce14a00 | 来源:发表于2017-07-09 17:47 被阅读18次
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();

相关文章

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

    InputStream(抽象的)字节输入流顶层父类 FileInputStream子类:构造方法: 1.输入流如果...

  • Java学习笔记 20 - 转换流、缓冲流

    本文主要内容1、转换流2、缓冲流3、各种流文件复制方式的效率比较4、IO流对象的操作规律 01转换流 A: 转换流...

  • Java IO流(转换流的字符编码)

    编码:字符串变成字节数组,解码:字节数组变成字符串。String-->byte[];str.getBytes[ch...

  • IO流---转换流

    我们在使用字符流操作数据的时候,使用的是默认的编码表,当我们想自己手动更换编码表时,java为我们提供了转换流对象...

  • IO流——转换流

    处理流之二:转换流的使用 转换流 属于字符流 InputStreamReader:将一个字节的输入流转换为字符的输...

  • 2019-03-04

    高效缓冲流,转换流,序列化流,打印流。。 能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流...

  • IO流

    一、IO流的概述: 二、IO流的分类: 三、字节缓冲流: 四、字符缓冲流: 五、转换流(把字节流转换为字符流): ...

  • 3/23day17_缓冲流_转换流_序列化流_打印流_装饰设计模

    复习 今日内容 缓冲流(高效流, 比普通流性能更高) 转换流(编码相关的流, 指定编码)' 序列化流(操作对象) ...

  • Java IO -- 3

    第一章 缓冲流 在基本的一些IO流的基础上,有一些功能更为强大的流,比如能够高效读写的缓冲流,能够转换编码的转换流...

  • IO流之随机访问流和转换流

    本文介绍java IO几种比较重要的流,随机访问流,转换流。 一、随机访问流 RandomAccessFi...

网友评论

    本文标题:IO流----编码----转换流

    本文链接:https://www.haomeiwen.com/subject/igtehxtx.html