当前位置: 首页 > article >正文

学习笔记048——Java字节流

文章目录

  • IO 流
    • 1、File 类
    • 2、字节流
      • 2.1、InputStream
      • 2.2、OutputStream

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.southwind.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.southwind.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.southwind.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.southwind.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.southwind.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.southwind.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();
    }
}

http://www.kler.cn/a/420850.html

相关文章:

  • CAD 二次开发入门与实践:以 C# 为例
  • C++ 分治
  • 【手术显微镜】市场高度集中,由于高端手术显微镜的制造技术主要掌握于欧美企业
  • ARP表、MAC表、路由表的区别和各自作用
  • ABE 中的隐藏属性:DIPPE(去中心化内积谓词加密)
  • Redis 之持久化
  • Kotlin 协程的异常处理
  • 蓝象智联携手西电发布GaiaGPT,夯实数据安全底座
  • python(18) : flask_sqlalchemy 配置sqlserver数据库对象
  • 设计模式之 建造者模式 C# 范例
  • 细说STM32单片机用定时器触发DAC输出三角波并通过串口观察波形的方法
  • Microi吾码产品深度测评:轻量级企业管理应用的全方位剖析
  • Python生日祝福烟花
  • 怎么使用开源的 FFmpeg 命令行工具压缩视频大小
  • 【贪心算法】贪心算法五
  • “量子跃迁与数据织网:深入探索K最近邻算法在高维空间中的优化路径、神经网络融合技术及未来机器学习生态系统的构建“
  • java网络通信(三):TCP通信、实现客户端-服务端消息通信
  • 详细介绍下oracle建库过程中核心脚本dbcore.bsq
  • Linux系统编程之进程控制
  • 华为的USG6000为什么不能ping通
  • 微信小程序 运行出错 弹出提示框(获取token失败,请重试 或者 请求失败)
  • 深入探索HarmonyOS next与ArkTS探索
  • Ubuntu桥接模式设置静态IP
  • 【错误记录】Android Studio 开发环境内存占用过多 ( 记录内存使用情况 )
  • 【系统架构设计师】真题论文: 论无服务器架构及其应用(包括解题思路和素材)
  • 在物理机上安装 Jupyter 的完整指南