IO与文件「建议收藏」

IO与文件「建议收藏」IO与文件FileFile类的一个对象,代表一个文件或一个文件目录(俗称文件夹)package com.atguigu.java;import java.io.File;import java.io.IOException;public class FileTest { public static void main(String[] args) throws IOException { File file1 = new File(“hello.txt”);//相对路

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

IO与文件

File

File类的一个对象,代表一个文件或一个文件目录(俗称文件夹)

package com.atguigu.java;

import java.io.File;
import java.io.IOException;

public class FileTest { 
   
    public static void main(String[] args) throws IOException { 
   
        File file1 = new File("hello.txt");//相对路径,相对当前module
        System.out.println(file1.getAbsoluteFile());
        System.out.println(file1.getPath());
        System.out.println(file1.getName());
        System.out.println(file1.getParent());
        System.out.println(file1.length());
        System.out.println(file1.lastModified());


        String[] list = file1.list();
        for(String s: list){ 
   
            System.out.println(list);
        }
        File[] files = file1.listFiles();
        for(File f:files){ 
   
            System.out.println(files);
        }
        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.isHidden());

        if(!file1.exists())
            file1.createNewFile();
        else { 
   
            file1.delete();
        }
        file1.mkdir();
        file1.mkdirs();
    }
}

File类中涉及到关于文件或文件目录的创建,删除,重命名,修改时间,文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。

流的分类

  • 字节流,字符流
  • 输入流,输出流
  • 节点流,处理流

流的体系

在这里插入图片描述

缓冲流

关闭流的时候先关闭外面的,再关闭里面的。(关闭外层流的时候,内层流也会自动的关闭)
缓冲流读写速度更快。读写会在内存中开辟一块儿空间。

转换流

提供了字节流和字符流之间的转换

  • InputStreamReader
  • OutputStreamWriter
    实例:utf-8文件转化为gbk文件

package com.atguigu.java;

import java.io.*;

public class HelloWorld { 
   
    public static void main(String[] args) throws IOException { 
   
        File file1 = new File("dbcp.txt");
        File file2 = new File("dbcp_bgk.txt");

        FileInputStream fis = new FileInputStream(file1);
        FileOutputStream fos = new FileOutputStream(file2);

        InputStreamReader isr = new InputStreamReader(fis,"utf-8");
        OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");

        char[] cbuf = new char[20];

        int len;
        while ((len = isr.read(cbuf)) != -1){ 
   
            osw.write(cbuf,0,len);
        }
        isr.close();
        osw.close();


    }
}

标准输入输出流

  1. 标准的输入输出流
    System,in 标准的输入流,默认从键盘输入,类型是InputStream
    System,out 标准的输出流,默认从控制台输出,类型是 PrintStream,其是OutputStream的子类
  2. System类的SetIn()/Setout()方式重新指定输入和输出流
  3. 练习:从键盘输入字符串,要求读取到的整行字符串转换成大写输出、然后继续进行输入操作
package com.atguigu.java;

import java.io.*;

public class HelloWorld { 
   
    public static void main(String[] args) throws IOException { 
   

        InputStreamReader isr = new InputStreamReader(System.in);

        BufferedReader br = new BufferedReader(isr);
        String data;
        while(true){ 
   
            data = br.readLine();
            if("e".equals(data) || "exit".equals(data))
                break;
            String upperCase = data.toUpperCase();
            System.out.println(upperCase);
        }
        br.close();


    }
}

打印流

PrintStream和PrinterWriter提供了一系列重载方法print()和println()
将System.out.println()方法打印到指定文件

package com.atguigu.java;

import java.io.*;

public class HelloWorld { 
   
    public static void main(String[] args) throws IOException { 
   
        PrintStream ps = null;
        try { 
   
            FileOutputStream fos = new FileOutputStream(new File("D:\\IO\\text.txt"));
            ps = new PrintStream(fos,true);
            if(ps != null){ 
   
                System.setOut(ps);
            }

            for(int i = 0;i <= 255;i ++){ 
   
                System.out.println((char)i);
                if(i % 50 == 0)
                    System.out.println();
            }

        }catch (Exception e){ 
   
            ps.close();
        }

    }
}

数据流

DataInputStream和DataOutputStream

package com.atguigu.java;

import java.io.*;

public class HelloWorld { 
   
    public static void main(String[] args) throws IOException { 
   
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.txt"));
        dos.writeUTF("刘建辰");
        dos.flush();
        dos.writeInt(23);
        dos.writeBoolean(true);
        dos.flush();
        dos.close(); 
    }
}

对象流

ObjectInputStream和ObjectInputStream
对象要想可序列化,对象类必须实现Serializable接口
作用:可以把java中的对象写入到数据源中, 也能把对象从数据源中还原回来
该对象必须指定静态类型常量serialVersionUID
static和transient修饰的属性不能被序列化

package com.atguigu.java;

import java.io.*;

public class HelloWorld { 
   
    public static void main(String[] args){ 
   
        ObjectOutputStream oos = null;
        try { 
   
            oos = new ObjectOutputStream(new FileOutputStream("object.dat"));
            oos.writeObject(new String("我爱北京天安门"));
            oos.flush();
        }catch (IOException e){ 
   
            e.printStackTrace();
        }finally { 
   
            if(oos != null)
            { 
   
                try { 
   
                    oos.close();
                } catch (IOException e) { 
   
                    e.printStackTrace();
                }
            }
        }


        ObjectInputStream ois = null;
        try { 
   
            ois = new ObjectOutputStream(new FileInputStream("object.dat"));
            Object object = ois.readObject();
            String str = (String)object;
        } catch (IOException e) { 
   
            e.printStackTrace();
        } catch (ClassNotFoundException e) { 
   
            e.printStackTrace();
        } finally { 
   
            if(ois != null) { 
   
                try { 
   
                    ois.close();
                } catch (IOException e) { 
   
                    e.printStackTrace();
                }
            }
        }
    }
}

RandomAccessFile类

  1. RandomAccessFile 直接继承于Object类,实现了 DataInput和DataOutput接口
  2. RandomAccessFile 既可以作为一个输入流,又可以作为一个输出流
  3. “r”以只读方式打开 “rw”打开以便读取和写入 “rwd”打开以便读取和写入:同步文件内容的更新 “rws”打开以便读取和写入:同步文件内容和元数据的更新
  4. 如果RandomAcessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建,如果写出到的文件存在,则会对原有文件内容进行覆盖。(默认情况下,从头覆盖)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168827.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 集群技术概述_集群计算机

    集群技术概述_集群计算机集群技术概述一、集群的起源二、集群的优点1.强扩展能力2.实现方式容易3.高可用性4.易管理性三、集群的类型1.负载均衡集群2.高可用性集群3.高性能集群四、集群的特点1.心跳监测2.漂移IP地址五、集群的应用1.石油地震数据处理2.数值天气预报一、集群的起源        集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直

    2022年8月31日
    2
  • jdk1.7 hashmap扩容_Java并发实现原理:JDK源码剖析

    jdk1.7 hashmap扩容_Java并发实现原理:JDK源码剖析HashMap简介:HashMap在底层数据结构上采用了数组+链表+红黑树,通过散列映射来存储键值对数据因为在查询上使用散列码(通过键生成一个数字作为数组下标,这个数字就是hashcode)所以在查询上的访问速度比较快,HashMap最多允许一对键值对的Key为Null,允许多对键值对的value为Null。它是非线程安全的。在排序上面是无序的。HashMap的主要成员变量…

    2022年9月21日
    2
  • 渗透测试 漏洞扫描_系统漏洞扫描工具有哪些

    渗透测试 漏洞扫描_系统漏洞扫描工具有哪些安全漏洞产生的原因技术原因软件系统复杂性提高,质量难于控制,安全性降低 公用模块的使用引发了安全问题经济原因“柠檬市场”效应——安全功能是最容易删减的部分环境原因从传统的封闭、静态和可控变为开放、动态和难控 攻易守难安全缺陷安全性缺陷是信息系统或产品自身“与生俱来”的特征,是其“固有成分”安全漏洞是与生俱来的系统设计缺陷Internet从设计时就缺乏安全的总体架构和设计 TCP/IP中的三阶段握手.软件源代码的急剧膨胀Windows951500万行

    2022年8月12日
    7
  • c#面试题及答案2020_2020年1月13日

    c#面试题及答案2020_2020年1月13日Winform常见笔面试题1.如何设置窗体页面的默认提交按钮?设置Form的AcceptButton属性,将用户按Enter时,就相当于单击了AcceptButton属性指定的按钮,就会引发它的Click事件。2.怎么让一个窗体在运行时,只能打开一个?1)可以通过遍历Application的OpenedForms集合,从中如果找到了该Form,将其激活即可2)给该Form定义静态创建方法,除非该页面已经关闭或释放,否则直接返回该实例,不重复创建publicstaticForm1frm;

    2025年7月8日
    3
  • 如何修改手机IP地址

    如何修改手机IP地址说起手机换IP大家可能没有对电脑换IP那么熟悉,但是现在智能手机能做到事情越来越多,手机换IP也成为许多工作需要,一部分人还不知道怎么操作,就跟着小编一起来看看手机换IP的几种方法。一、手动换IP这个适合偶尔换IP,时间富裕的朋友,我们使用手机进行开关飞行模式,这样就可以进行换IP。也可以找到手机设置点进去先进入WiFi热点的列表,点击所连接的WiFi热点的名字。选择“修改网度络”,然后勾选“显示高级选项版”,就可以进行IP设置了。还有一种比较简单,就是用软件辅助换IP,这里以芝麻代理为例

    2022年6月28日
    66
  • JS替换空格回车换行符

    JS替换空格回车换行符JS替换空格回车换行符str=str.replace(/\r/g,"&amp;nbsp;")str=str.replace(/\n/g,"&lt;br/&gt;")  或 str=str.replaceAll(" ","")

    2022年5月23日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号