java输入输出流框架

java输入输出流

流:内存与存储设备之间传输数据的通道
流的分类:
输入流:将硬盘中的数据读入内存
输出流:将内存中的数据写入硬盘
按单位分:
字节流:传输的单位为字节
字符流:传输的单位为字符

package IO;

import com.sun.org.apache.xpath.internal.operations.String;

import java.io.FileInputStream;

public class Demo {
    public static void main(String[] args) throws Exception{
        //创建FileInputStream 类的对象,并指定文件的路径
        FileInputStream file = new FileInputStream("d:sss.txt");
        //创建文件
        //file.read()
        //单字节读取
        int data = 0;
        while ((data=file.read())!=-1){//当file 返回值不等于-1读取之后装在data中,
            System.out.print((char) data);
        }
        //多字节读取
        byte[] by = new byte[3];
        int count = 0;
        while ((count=file.read(by))!=-1){
            System.out.println(new String());
        }
        file.close();
    }

}

package IO;

import java.io.FileOutputStream;

public class Demo1 {
    public static void main(String[] args) throws Exception{//可能创建不成功,抛出异常
        //创建一个文件输出流对象
        FileOutputStream file1 = new FileOutputStream("d:\\bbb.txt");
        //写入文件
        file1.write(97);
        file1.write('b');
        file1.write('c');
        String string = "hello world";
        file1.write(string.getBytes());//将string 转为字节流存入file1文件




        //关闭

        file1.close();
        System.out.println("执行完毕");

    }
}

package IO;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.file.FileSystem;
import java.util.ArrayList;
import java.util.Arrays;

/*
* 使用文件字节流 实现文件的复制
* */
public class Demo2 {
    public static void main(String[] args) throws Exception{

        FileInputStream fis = new FileInputStream("D:\\001.jpg");
        FileOutputStream fout = new FileOutputStream("D:\\002.jpg");
        ArrayList<Byte> buf = new ArrayList<>();
        int count=0;
        while((count=fis.read())!=-1){//将图片读出放入count
            buf.add((byte)count);//将图片(本质是整形数据)转换为字节流byte 类型追加进入buf
        }
        for(int i=0;i<buf.size();i++){//遍历buf,写入fout文件
            fout.write(buf.get(i));
        }
        fis.close();
        fout.close();
        System.out.println("复制完毕");
    }
}

字节缓冲流

开辟空间暂存字节或字符流,减少内存访问磁盘的次数,提高IO效率。
创建缓冲流对象之前应先实例化对应的字节流或字符流对象。

package IO;

import java.io.BufferedInputStream;
import java.io.FileInputStream;

public class Demo3 {
    public static void main(String[] args) throws Exception{
        FileInputStream fis= new FileInputStream("d:\\bbb.txt");
        BufferedInputStream bis = new BufferedInputStream(fis);//创建缓冲区,将字节输入流存入缓冲区
        int count = 0;
        while ((count = bis.read())!=-1){
            System.out.print((char) count);
        }
        bis.close();//关闭缓冲区
    }
}

对象流

从文件中读取一个对象称之为反序列化
将对象写入文件中称之为序列化,实例化对应的抽象类时必须实现一个空接口,Serializable 接口

package IO;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Demo4 {
    public static void main(String[] args) throws Exception{
        FileOutputStream file1 = new FileOutputStream("d:\\sss.txt");
        //创建对象流之前必须创建文件字节流
        ObjectOutputStream out = new ObjectOutputStream(file1);
        //序列化  将对象写入文件 反序列化 在文件中读对象
        Student zhangsan = new Student("zhansan",20);
        out.writeObject("zhangsan");//写入对象的操作
        //写入对象的类必须实现一个空的标记接口(Serializable)
        out.close();
        System.out.println("序列化完成");
    }
}

打印流

package IO;

import java.io.FileReader;
import java.io.FileWriter;

/*
* 使用FileReader 和 FileWrite 实现文本的复制,只能用于文本复制
* */
public class Demo6 {
    public static void main(String[] args) throws Exception{
        //创建一个读入流 读入内存
        FileReader fi1 = new FileReader("d:\\a.txt");
        //创建一个写出流写入硬盘
        FileWriter fi2 = new FileWriter("d:\\b.txt");
        int data = 0;
        while((data=fi1.read())!=-1){
            fi2.write(data);
            fi2.close();
            fi1.close();
        }
    }
}

File 类和文件夹类

package IO;

import java.io.File;
import java.util.Date;

/*
* 涉及到文件的创建都需要抛出异常,防止创建文件不成功
*
* */
public class Demo7 {
    public static void main(String[] args) throws Exception{
        separator();

    }
    public  static void separator()throws Exception{
        System.out.println("路径分隔符为:"+ File.pathSeparator);//路径分割符
        System.out.println("路径分隔符为:"+ File.separator);//名称分隔符
        //文件操做
        File f1 = new File("d:\\ddd.txt");//new一个文件类的对象 并没有创建文件
        if(!f1.exists()) {//如果f1文件不存在,就创建
          boolean b = f1.createNewFile();//调用方法创建文件
            System.out.println("创建结果为:"+b);
        }
        //删除文件
        //直接删除
//        System.out.println("删除结果为:"+f1.delete());
//        //使用jvm退出时删除
//        f1.deleteOnExit();
//        Thread.sleep(5000);//jvm休眠5秒
        //获取文件的绝对路径
        System.out.println("获取绝对路径为:"+f1.getAbsolutePath());
        System.out.println("获取文件的相对"+f1.getPath());
        System.out.println("获取文件的名字"+f1.getName());
        System.out.println("获取文件的父目录"+f1.getParent());
        System.out.println("获取文件的长度"+f1.length());
        System.out.println("获取文件的创建时间"+new Date(f1.lastModified()).toLocaleString());
        //判断文件是否可写或可读
        System.out.println("是否可读"+f1.canRead());
        System.out.println("是否可写"+f1.canWrite());
        System.out.println("是否是隐藏"+f1.isHidden());//是否时隐藏的
        System.out.println("是否是文件"+f1.isFile());



    }
}

package IO;

import java.io.File;
import java.io.FileFilter;

public class Demo8 {
    public static void main(String[] args) throws Exception{
        file();
    }
    public static void file()throws Exception{
        File f = new File("d:\\aa\\bb\\cc");
        System.out.println(f.toString());
        if (!f.exists()){
            f.mkdir();//创建文件夹
            System.out.println("创建结果为:"+f.mkdirs());
        }
//        System.out.println("删除结果为:"+f.delete());
        //jvm删除
        f.deleteOnExit();
        Thread.sleep(5000);//Thread 类中的方法sleep 关闭gvm
        //遍历文件夹
        File f2 = new File("d:\\aa\\bb");
        String[] files = f2.list();
        System.out.println("-------------------------------");
        for (String string:
             files) {
            System.out.println(string);

        }
        System.out.println("============filefilter 接口的使用===============");
        File[] fi = f2.listFiles(new FileFilter() {
            //调用FileFilter 接口中的FileFilter类new 一个新的对象调用方法FileFilter
            @Override
            public boolean accept(File pathname) {//pathname路径
                if (pathname.getName().endsWith(".jpg")) {  //通过路径获取以.JPG 结尾的文件 实现过滤
                    return false;

                }
                return false;
            }
        });
        for (File f7: fi) {
            System.out.println(f7.getName());

        }

    }
}

package IO;

import java.util.Properties;

/*
* properties 集合的使用
*
* */
public class Demo9 {
    public static void main(String[] args) {
        //创建集合
        Properties p1 = new Properties();
        //添加数据
        p1.setProperty("用户","hzansna");
        p1.setProperty("sge","20");
        System.out.println(p1.toString());
        //遍历keyset 方法  entrySet
        System.out.println(p1.containsKey("用户"));
        //遍历




    }
}










生而自由

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值