zoukankan      html  css  js  c++  java
  • Java IO

    文件操作

    File类,获取文件的一些属性,要对文件内容进行操作需要配合流
    常量:
    static String separator//路径分隔符例如/
    static String pathSeparator//多个路径的分隔符,例如;
    方法:
    boolean createNewFile()//创建新文件
    boolean mkdir()//创建新目录
    boolean delete()//删除文件
    String[] list()//目录下的文件名
    File[] listFiles()//目录下的文件

    流的分类

    按方向:输入流、输出流
    按数据类型:字节流、字符流
    按功能:节点流、处理流(处理流对节点流进行包装并提供扩展功能,例如buffer流、object流)
    所有流在使用结束要手动close

    节点流

    基于字节的节点流

    接口:InputStream、OutputStream
    实现类:FileInputStream、FileOutputStream

    基于字符的节点流

    接口:Reader、Writer
    实现类:FileReader、FileWriter(继承自InputStreamReader、OutputStreamWriter)

    处理流

    处理流是对节点流进行包装的,根据处理流的名字可以看出其包装的节点流

    缓冲流

    字节流和字符流都有相应的缓冲流
    BufferedInputStream、BufferedOutputStream、BufferedReader(提供的readLine方法比较方便)、BufferedWriter(使用的最后要flush)

            BufferedReader reader =null;
            BufferedWriter writer=null;
            try {
                reader = new BufferedReader(new FileReader("F:\in.txt"));
                writer=new BufferedWriter(new FileWriter("F:\out.txt"));
                String line=null;
                while((line=reader.readLine())!=null){
                    writer.write(line);
                    writer.newLine();
                    System.out.println(line);
                }
                writer.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    assert reader != null;
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    assert writer != null;
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    

    转换流

    InputStreamReader(字节到字符的转换,接收字节输入流)、OutputStreamWriter(字符到字节的转换,接收字节输出流)

    随机存取流

    public class RandomAccessFile extends Object implements DataOutput, DataInput, Closeable
    RandomAccessFile​(File file, String mode)
    void	seek​(long pos)
    String	readLine()
    int	readInt()
    void	write​(byte[] b)
    void	writeDouble​(double v)
    

    对象流

    ObjectInputStream、ObjectOutputStream
    实现序列化接口的对象读写进文件
    可以对InputStream和OutputStream进行包装
    readObject、writeObject方法(每次write都要flush)

            ObjectOutputStream outputStream =new ObjectOutputStream(new FileOutputStream("F:\out.txt"));
            Student student=new Student(12,"张三");
            outputStream.writeObject(student);
            outputStream.flush();
            outputStream.close();
            student=null;
    
            ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("F:\out.txt"));
            student=(Student) inputStream.readObject();
            System.out.println(student);
    

    数据流

    DataInputStream、DataOutputStream
    包装InputStream、OutputStream
    对基本类型的数据进行read和write

    总结

    选择流要考虑数据源与目的地(文件、键盘、网络、标准输入等)、数据类型(字节、字符)、要进行的处理(缓冲、序列化等)

    参考:
    https://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html
    https://www.cnblogs.com/hxsyl/p/3302852.html
    https://www.cnblogs.com/baixl/p/4170599.html
    https://www.cnblogs.com/authetic/p/8861524.html

  • 相关阅读:
    SQL后台分页三种方案和分析
    SQL分页查询语句
    SQL利用临时表实现动态列、动态添加列
    查询sybase DB中占用空间最多的前20张表
    敏捷软件开发之TDD(一)
    敏捷软件开发之开篇
    Sql Server 2012启动存储过程
    改变VS2013的菜单栏字母为小写
    Sql Server获得每个表的行数
    Sql Server trace flags
  • 原文地址:https://www.cnblogs.com/darknessplus/p/10335504.html
Copyright © 2011-2022 走看看