IO 基础学习

基础概念:https://www.cnblogs.com/xll1025/p/6418766.html

1.字节流

InputStream  输入流  读取 使用https://www.cnblogs.com/kongxianghao/articles/6879367.html

OutputStream 输出流 写入 使用:http://www.cnblogs.com/kongxianghao/articles/6879402.html


2.字符流

Reader  读取 使用:https://www.cnblogs.com/kongxianghao/articles/6879426.html

Writer  写入 使用:http://www.cnblogs.com/kongxianghao/articles/6879446.html


3.文件操作字节流和字符流

讨论:1.字节流和字符流的区别:

    字节流直接写入内存,字符流写入缓冲,不close和flush不会被存储,写入文件操作,flush和close的区别是,flush之后还可以write,close之后不可以写入

          2.网络请求交互字节流 ,如何处理,文件类型,正常的数据流反序列话如何处理?

        通常请求网络,网络给的数据都是以流的形式,客户端接收到流之后,然后对流进行操作,如果是文件把流写入文件,然后读取,中间处理文件可以在客户端缓存中处理,也可以保存成文件在处理,例如图片的三级缓存;通常接收的数据一般都转化成string 再处理,当然string在反序列话转化成实体类,还是map或者list结合业务来等数据类型;当然像xml格式的数据,也是先转化成流,通过xml提供api  pull和sax进行解析(Dom)一般是对资源文件全部解析;

测试例子

 
 
try {
    //创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
    //而且该文件会被创建到指定目录下。如果该目录有同名文件,那么该文件将被覆盖。

    File file = new File("D:/1.txt");
    Writer fw = new FileWriter(file.getAbsoluteFile());//目的是明确数据要存放的目的地。
    //调用write的方法将字符串写到流中
    fw.write("hello world!");
    //刷新流对象缓冲中的数据,将数据刷到目的地中
    fw.flush();
    //关闭流资源,但是关闭之前会刷新一次内部缓冲中的数据。当我们结束输入时候,必须close();
    fw.write("first_test");
    fw.write("输出,你倒是输出呀!09kjadsfadf");
    fw.close();
    //flush和close的区别:flush刷新后可以继续输入,close刷新后不能继续输入。

    System.out.println(file.getName());
   //在写入操作时,第二参数如何设置,设置成true的情况,文件内容就会叠加写入
    OutputStream fos = new FileOutputStream(file.getAbsoluteFile(),true);
    String str = "Hello World!!!";        // 准备一个字符串
    byte b[] = str.getBytes();            // 只能输出byte数组,所以将字符串变为byte数组
    fos.write(b);                        // 将内容输出,保存文件
    // 第4步、关闭输出流
    fos.close();

} catch (IOException e) {
    e.printStackTrace();
}

try {
    //字符流
    File f = new File("D:/1.txt");
    Reader read = new FileReader(f);
    char c[] = new char[1024];
    int read1 = read.read(c);
    read.close();

    //字节流
    byte[] buf = new byte[2048];
    int len;
    int h = 0;
    InputStream fos = new FileInputStream(f);
    while ((len = fos.read()) != -1) {
        buf[h] = (byte) len;
        h++;
    }
    System.out.println(new String(c, 0, read1) + "\n" + read1 + "\n" + new String(buf, 0, h));
} catch (Exception e) {
    e.printStackTrace();
}

猜你喜欢

转载自blog.csdn.net/lolyiku/article/details/80928328
今日推荐