学习笔记048——Java字节流

IO 流

Input、Output

输入:将文件以数据流的形式读取到 Java 程序中,上传

输出:通过 Java 程序将数据流写到文件中,下载。

1、File 类

Java 程序是如何操作文件的?

java.io.File 类专门用来创建文件对象的,表示某个文件。

方法描述
public File(String path)根据路径创建文件对象
public String getName()获取文件名
public String getParent()获取文件所在的目录
public File getParentFile()获取文件所在的目录对应的 File 对象
public String getPath()获取文件路径
public boolean exists()判断文件对象是否存在
public boolean isDirectory()判断对象是否为目录
public boolean isFile()判断对象是否为文件
public long length()获取文件的大小(byte)
pubilc boolean createNewFile()根据当前对象创建文件
public boolean delete()删除文件
public boolean mkdir()根据当前对象创建目录
public boolean renameTo(File file)为已存在的对象重命名
package com.htl.test;

import java.io.File;

public class Test {
    public static void main(String[] args) throws Exception {
        File file = new File("D:\\java\\test.txt");
        if (file.exists()) {
            System.out.println(file + "存在");
            System.out.println("文件名:"+file.getName());
            System.out.println("文件长度:" + file.length());
            System.out.println("文件路径:" + file.getPath());
            System.out.println("文件的parent:" + file.getParent());
            System.out.println("文件的parentFile" + file.getParentFile());
            File parentFile = file.getParentFile();
            if(parentFile.isDirectory()){
                System.out.println("parentFile是一个文件夹");
            }
        }
        System.out.println("*********************************************");
        File file1 = new File("D:\\java\\test2.txt");
        File file2 = new File("D:\\java\\test3.txt");
        System.out.println(file1.renameTo(file2));
        System.out.println(file2.delete());
    }
}

2、字节流

Java 中的流有很多种分类

按照方向,可以分为输入流输出流

按照单位,可以分为字节流字符流

按照功能,可以分为节点流处理流

字节流又可以按照方向分为输入字节流(InputStream)和输出字节流(OutputStream)

2.1、InputStream

方法描述
int read()以字节为单位读取数据
int read(byte b[])将数据存入byte数组,返回数据长度
int read(byte b[],int off,int len)将数据存入byte数组的指定区间
byte[] readAllBytes()将数据转换成一个byte数组
int available()当前数据流中未读取的数据个数
void close()关闭数据流
package com.htl.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class Test2 {
    public static void main(String[] args) throws Exception {
        //获取文件对象
        File file = new File("D:\\java\\test.txt");
        //获取输入流
        InputStream inputStream = new FileInputStream(file);
        for (int i = 0; i < file.length(); i++) {
            int read = inputStream.read();
            System.out.println(read);
        }
        System.out.println("***************************");
        inputStream = new FileInputStream(file);
//        System.out.println(inputStream.read());
//        System.out.println(inputStream.read());
//        System.out.println(inputStream.read());
        int temp = 0;
        while ((temp = inputStream.read()) != -1){
            System.out.println("当前未读取的数据个数是:" + inputStream.available());
            System.out.println(temp);
        }
    }
}
package com.htl.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Arrays;

public class Test2 {
    public static void main(String[] args) throws Exception {
        //获取文件对象
        File file = new File("D:\\java\\test.txt");
        //获取输入流
        InputStream inputStream = new FileInputStream(file);
        byte[] bytes = new byte[1024];
        System.out.println(inputStream.read(bytes,10,5));
        System.out.println(Arrays.toString(bytes));
    }
}
package com.htl.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Arrays;

public class Test2 {
    public static void main(String[] args) throws Exception {
        //获取文件对象
        File file = new File("D:\\java\\test.txt");
        //获取输入流
        InputStream inputStream = new FileInputStream(file);
        byte[] bytes = inputStream.readAllBytes();
        System.out.println(Arrays.toString(bytes));
    }
}

2.2、OutputStream

方法描述
void write(int b)以字节为单位写数据
void write(byte b[])将byte数组中的数据写出
void write(byte b[],int off,in len)将byte数组中指定区间的数据写出
void flush()强制将缓冲区的数据同步到输出流中
void close()关闭数据流
package com.htl.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class Test3 {
    public static void main(String[] args) throws Exception {
        //创建文件对象
        File file = new File("D:\\java\\copy.txt");
        if(file.exists()){
            //创建输出流
            OutputStream outputStream = new FileOutputStream(file);
            //开始写数据
            byte[] bytes = {12,16,33,72,90,100,108,109};
            outputStream.write(bytes,3,3);
            //关闭数据流
            outputStream.close();
        }else{
            System.out.println("文件不存在");
        }
    }
}

文件复制

package com.htl.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class Test4 {
    public static void main(String[] args) throws Exception {
        //文件复制
        //java/test.txt 复制到 java2/test.txt
        //InputStream
        InputStream inputStream = new FileInputStream("D:\\java\\test.txt");
        //OutputStream
        OutputStream outputStream = new FileOutputStream("D:\\java2\\test.txt");
        int temp = 0;
        //读数据
        while ((temp = inputStream.read())!=-1){
            //写数据
            outputStream.write(temp);
        }
        outputStream.close();
        inputStream.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值