文件、字节字符流

文件:存储数据的媒介
文件夹:目录
流:
    从流向分:I/O
        输入流(Input):读数据
        输出流(Output):写数据

    按阻塞方式:
        BIO(阻塞流)    NIO(伪异步非阻塞流,分布式用)    AIO(异步非阻塞流)
        异步:多个同时执行,相互之间无关。
        同步:一个一个执行。
    按读取方式分:
                字节流                 字符流
        字节输入流   字节输出流   字符输入流   字符输出流     缓冲流

        缓冲型字节输入流 BufferedInputStream
        缓冲型字节输出流 BufferedOutputStream
        缓冲型字符输入流 BufferedReader
        缓冲型字符输出流 BufferedWriter
        管道流 PipedWriter

1、文件:

package com.fyb.oop.week3.liu.wenjian;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

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

        /*forFiles("D:\\新建文件夹\\培训\\教材");*/

        File file = new File("D:\\新建文件夹\\培训\\HelloKitty.class");//正斜杠(/)可以写一个,反斜杠(\)必须写俩
        File file2 = new File("D:/新建文件夹/培训/HelloKitty.java");
        System.out.println(file.canRead());//查找文件是否存在
        System.out.println(file.getName());//查看文件名
        System.out.println(file.canRead());//是否可读
        System.out.println(file.canWrite());//是否可写
//        System.out.println(file.createNewFile());//创建新文件
//        file.delete();
        System.out.println(file.compareTo(file2));//从不同的那一位比较,c-j=-7
        System.out.println(file.hashCode());//hashCode地址
        System.out.println(file.length());//字节数长度
        System.out.println(file.toString());//打印路径完整名称
        System.out.println(file.canExecute());//能否执行

//        file.deleteOnExit();//删除
//        Thread.sleep(5000);//休眠5秒

        System.out.println(file.equals(file2));//比较是否相等,相等则重写了equals

        System.out.println(file.getAbsolutePath());//获取绝对路径
        System.out.println(file.getAbsoluteFile());//获取绝对文件
        System.out.println(file.getCanonicalPath());//获取规范路径
        System.out.println(file.getCanonicalFile());//获取规范文件

        System.out.println(file.getFreeSpace());//获取剩余空间
        System.out.println(file.getParent());//获取上层
        System.out.println(file.getParentFile().isFile());//获取上层是否是文件
        System.out.println(file.getPath());//获取绝对路径
        System.out.println(file.isAbsolute());//是否是绝对的
        System.out.println(file.isHidden());//是否隐藏
        System.out.println(file.lastModified());//最后修改时间;以long类型,单位为毫秒,从1970年0点0秒开始计算

        File file1 = new File("D:\\新建文件夹\\培训");
        String[] files=file1.list();//获取file1子文件
        for (String s : files) {
            System.out.println(s);
        }

        File[] files = new FileFilter[];//数组形式
        for (File file1 : files) {
            System.out.println(file1);
        }

        file.mkdirs();//创建文件夹
    }
}

 2、字节流:

//向文件中写数据
        File file = new File("D:\\新建文件夹\\培训\\data.txt");
        if(!file.exists()){//如果不存在
            file.createNewFile();
        }
        FileOutputStream fos = new FileOutputStream(file);
        fos.write("sfdgf".getBytes("utf-8"));//写入,字符串转为字节码,utf-8编码,一个字符占3个字节;jbk编码,一个字符占2个字节
        fos.flush();//冲刷,清空缓存
        fos.close();//释放资源

//从文件中读取数据
        File file = new File("D:\\新建文件夹\\培训\\data.txt");
        FileInputStream fis = new FileInputStream(file);
        byte[] bs = new byte[1024];
        int i = fis.read(bs);
        String s = "";
        while (i>0){
             s += new String(bs,0,i);
             i = fis.read(bs);
        }
//        String s = new String(bs,0,i);
        System.out.println(s);
        fis.close();//释放资源

加密:

        File file1 = new File("D:\\新建文件夹\\培训\\data1.txt");
        if(!file1.exists()){//如果不存在
            file1.createNewFile();
        }
        FileOutputStream fos = new FileOutputStream(file1);
        //加密:交换字节码最后两位;解密:换回去
        File file = new File("D:\\新建文件夹\\培训\\data.txt");
        FileInputStream fis = new FileInputStream(file);
        byte[] bs = new byte[1024];
        int i = fis.read(bs);
        String s = "";
        while (i>0){
            byte temp = bs[0];
            bs[0] = bs[i-1];
            bs[i-1] = temp;
            fos.write(bs,0,i);
            i = fis.read(bs);
        }
        fos.flush();
        fos.close();
        fis.close();

        file.delete();

3、字符流:

//字符流:从文件中读取数据
        FileReader fr = new FileReader("D:\\新建文件夹\\培训\\data.txt");
        char[] buf  = new char[1024];
        int i = fr.read(buf);
        String s = "";
        while(i>0){
            s+=new String(buf,0,i);
            i = fr.read(buf);
        }
        System.out.println(s);
        fr.close();

//字符流:向文件中写数据
        FileWriter fw = new FileWriter("D:\\新建文件夹\\培训\\data.txt",true);//append:是否追加
        fw.write("阿斯顿飞过");
        fw.flush();//冲刷,清空缓存
        fw.close();

4、网络编程

        /*Socket socket = new Socket("192.168.1.101",8888);
        OutputStream os = socket.getOutputStream();//获取一个输出流
        FileInputStream fis = new FileInputStream("D:\\新建文件夹\\培训\\课堂视频");
        byte[] buf  = new byte[1024];
        int i = fis.read(buf);
        while(i>0){
            os.write(buf,0,i);
            i = fis.read(buf);
        }
        os.flush();
        fis.close();*/

        ServerSocket socket = new ServerSocket(8888);
        Socket soc = socket.accept();
        InputStream is = soc.getInputStream();
        FileOutputStream fos = new FileOutputStream("D:\\新建文件夹\\培训\\课堂视频");
        byte[] bytes = new byte[1024];
        int i = is.read(bytes);
        while(i>0){
            fos.write(bytes,0,i);
            i = is.read(bytes);
        }
        fos.flush();
        fos.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值