字节流和字符流

简介: 字节流和字符流

1.字节输入流:InputStream


  • 字节输入流的作用是从数据输入源(例如磁盘、网络等)获取字节数据到应用程序(内存)中;


读取字节

  • read 方法,每次可以读取一个字节的数据,提升为 int 类型,读取到文件末尾,返回 -1;
  // 1.创建一个字节输入流对象代表字节输入流管道与源文件接通
        InputStream is = new FileInputStream("D:\\code\\file-io-app\\file-io--app\\src\\hello.txt");
 
        // 2.开始读取文件中的字节数据,每次读取多个字节
        byte[]buffer1=new byte[5];
        int len1= is.read(buffer1);
        String rs1=  new String(buffer1);
        System.out.println(rs1);
 
 
 
        byte[] buffer = new byte[3];
        int len; // 记住每次读取了多少个字幕
        while ((len = is.read(buffer)) != -1){
            // 注意 :读取多少,倒出多少
            String rs=new String(buffer,0,len);// 读取字节数组,从0到len
            System.out.print(rs);
 
        }
        // 性能得到了明显的提升
        // 这种方案也不能避免读取汉字输出乱码的问题
 
        is.close();// 关闭流
 


2.字节输出流:OutputStream


  • 字节输出流的作用是将字节数据从应用程序(内存)中传送到输出目标,如外部设备、 网络等;
/* FileOutputStream (文件字节输出流)
        * 作用: 以内存为基准,把内存中的数据以字节的形式写到文件中去
        */
 
        // 创建一个字节输出流管道与目标文件接通
        // 覆盖管道
       // OutputStream os= new FileOutputStream("D:\\code\\file-io-app\\file-io--app\\src\\hello.txt");
 
        OutputStream os= new FileOutputStream("D:\\code\\file-io-app\\file-io--app\\src\\hello.txt",true);
        // 2.开始写字节数据出去了
        os.write(97);// 接一个字节
        os.write('b'); // b 98
      //  os.write('美');// [ooo] 默认只能写出去一个字节
 
        os.write("我爱你".getBytes());
 
        byte[]bytes="我爱你".getBytes();
        os.write(bytes,0,6); // 一个汉字三个字节
 
        // 换行
        os.write("\r\n".getBytes());// \n只在Windows系统  \r\n支持所有的
 
        os.close(); // 关闭流


3.字符输入流 FileReader


public class FileReaderTest1 {
    public static void main(String[] args) throws Exception {
 
        try ( // 1.创建一个文件字符流输出管道与源文件接通
                Reader fr=new FileReader("file-io--app\\src\\world"))
             {
               // 2.读取文本文件中的内容
//             int c; // * 记住每次读取的字符编号
//        while ((c= fr.read())!=-1){
//            System.out.print((char) c);
//        }
              // 3.每次读取多个字符
           char[]buffer=new char[3];
           int len;//记住读取到的字符数
           while ((len= fr.read(buffer))!=-1) {
               System.out.print(new String(buffer, 0, len));
           }
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
 
    }
}


4.字符输出流 FileWriter


public class FileWriterTest1 {
    public static void main(String[] args) throws IOException {
        // 字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效
        // 创建一个文件字符输出流管道
        try(Writer  fw= new FileWriter("file-io--app\\src\\world")) {
           // 输出字符流
            // 1.写一个字符
            fw.write('a');
             fw.write('w');
             fw.write('哈');
 
             // 2.写一个字符串
           fw.write("我爱你");
            fw.write("\r\n");
 
           // 3.写字符串中的一部分进去
            fw.write("我爱你中国",1,3);
            fw.write("\r\n");
 
           // 4. 写一个字符数组出去
            char[]buffer={'李','我','爱'};
            fw.write(buffer);
            fw.write("\r\n");
 
            // 5. 写一个字符数组中的一部分出去
            fw.write(buffer,0,1);
 
 
            fw.flush();
          // fw.close  关闭流,包括刷新流,但是关闭流之后,就不可以再加入数据
        } catch (IOException e) {
            e.printStackTrace();
        }
 
    }
}
目录
相关文章
|
4天前
|
存储 Java 索引
|
4天前
|
存储 移动开发 程序员
|
2月前
|
存储 Java 数据库
面试官:字节流可以处理一切文件为什么还需要字符流呢?
【6月更文挑战第8天】面试官:字节流可以处理一切文件为什么还需要字符流呢?
49 7
|
1月前
|
存储 缓存 Java
JavaSE—IO流之字符流与字节流
JavaSE—IO流之字符流与字节流
|
9月前
|
存储 Java
IO流之 字节流 & 字符流
大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等。在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象的表述为“流”,程序允许通过流的方式与输入输出设备进行数据传输。Java中的“流”都位于Java.io包中,称之为IO(输入输出)流。IO流即InputOutput的缩写。一切文件数据在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。httpshttps。...
113 0
|
12月前
|
存储 Windows
转换流
转换流
42 0
字节、字符输入输出流
字节、字符输入输出流
44 0
|
存储 Java C++
Java开发——28.I/O流_字符流和字节流
Java中I/O操作主要是指使用java.io包下的内容,进行输入和输出操作;输入叫做读取数据,输出叫做写出数据。主要操作文件内容,结合前面所学的File类,我们可以灵活的读取和写出文件。
Java开发——28.I/O流_字符流和字节流
|
存储 Java
IO流常用类(字节流、字符流、缓冲流)使用详解(一)
IO流常用类(字节流、字符流、缓冲流)使用详解(一)
254 0
IO流常用类(字节流、字符流、缓冲流)使用详解(一)
|
存储 Java
字节缓冲流构造方法、字节流复制视频、字符流及编码表介绍
字节缓冲流构造方法、字节流复制视频、字符流及编码表介绍的简单示例
86 0
字节缓冲流构造方法、字节流复制视频、字符流及编码表介绍