【JavaSec】JavaIO流

news2025/1/11 8:43:52

0x04 IO流

文章目录

  • 0x04 IO流
    • 创建文件
    • 读取文件信息
    • 文件目录操作
      • 删除
      • 创建目录
    • 文件流操作
      • 读文件
      • 写文件
        • write(byte[] b) 方法
        • write(byte[] b, int off, int len) 方法
      • 文件拷贝

向大佬致敬: https://drun1baby.top

创建文件

三种方法 一张图对比着看

image-20240819141758128

其实感觉差别不大,只是对File函数方法的传参值不同罢了

点进去就知道其实是多个带参构造方法

image-20240819141954386

image-20240819141958681

读取文件信息

package IOStream;

import java.io.File;

public class getFileInfo {
    public static void main(String[] args){
        getFileContents();
    }

    public static void getFileContents(){
        File file = new File("src/IOStream/CreateForFile/new1.txt");
        System.out.println("文件名称为:" + file.getName());
        System.out.println("文件的绝对路径为:" + file.getAbsolutePath());
        System.out.println("文件的父级目录为:" + file.getParent());
        System.out.println("文件的大小(字节)为:" + file.length());
        System.out.println("这是不是一个文件:" + file.isFile());
        System.out.println("这是不是一个目录:" + file.isDirectory());
    }
}

image-20240819142931863

文件目录操作

删除

删除文件:

image-20240819143614920

删除目录:

image-20240819143902026

删除失败了 是因为该目录下有其他文件 无法删除,只能删除空目录

创一个测试一下

image-20240819144037576

创建目录

区分一下两个函数就好

image-20240819144807868

文件流操作

项目地址:F:\ourdemo\BliJavaSec\activeClass\src

前置:

按照操作数据单位不同分为:字节流字符流

  • 字节流(8bit,适用于二进制文件)
  • 字符流(按字符,因编码不同而异,适用于文本文件)

读文件

  • read()

image-20240819152242787

很惭愧 没有解决中文输出乱码问题

不遗憾了 解决! ==> FileReader

private static void readFileWithChinese() {
String filePath = "src/IOStream/CreateForFile/new1.txt";
FileReader fileReader = null;
char[] cache = new char[1024];   //设置缓冲区
int readLen = 0;
try {
  fileReader = new FileReader(filePath);
  while ((readLen = fileReader.read(cache)) != -1){
      System.out.println(new String(cache, 0, readLen));
  }
}catch (IOException e){
  e.printStackTrace();
}finally {
  try{
      fileReader.close();
  }catch (IOException e){
      e.printStackTrace();
  }
}

}

image-20240819164245074

  • read(byte[] d)

image-20240819153316490

每次从缓存中读取 指定字节长度

private static void readFileWithCache() {
    String filePath = "src/IOStream/CreateForFile/new1.txt";
    FileInputStream fileInputStream = null;
    byte[] cache = new byte[8];   //设置缓冲区
    int readLen = 0;
    try {
        fileInputStream = new FileInputStream(filePath);
        while ((readLen = fileInputStream.read(cache)) != -1){
            System.out.println(new String(cache, 0, readLen));
        }
    }catch (IOException e){
        e.printStackTrace();
    }finally {
        try{
            fileInputStream.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

写文件

  • write(byte[] b) 方法
package IOStream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class WriteFile {
    public static void main(String[] args){
        writeFile();
    }

    private static void writeFile() {
        String filePath = "src/IOStream/CreateForFile/new3.txt";
        FileOutputStream fileOutputStream = null;
        try{
            fileOutputStream = new FileOutputStream(filePath);
            String content = "asdasdasdasd";
            try{
                fileOutputStream.write(content.getBytes());
            }catch (IOException e){
                e.printStackTrace();
            }
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }finally {
            try{
                fileOutputStream.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    }

}

image-20240819155608222

  • write(byte[] b, int off, int len) 方法

解释一下:

偏移量off : 从第几个字符开始输出

长度len : 需要输出长度

image-20240819160438400

追加写

image-20240819160522875

image-20240819160602588

文件拷贝

其实简单来说就是先从一个文件中读出来 然后再写入到另一个文件中

相当于对上面两个的一个总结 自己写一下

package IOStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {
    public static void main(String[] args){
        copyFile();
    }

    private static void copyFile() {
        String fromFilename = "src/IOStream/CreateForFile/new1.txt";
        String toFilename = "src/IOStream/CreateForFile/new3.txt";
        FileInputStream fileInputStream = null;
        FileOutputStream fileOutputStream = null;
        byte[] cache = new byte[1024];
        int readLen = 0;
        try{
            fileInputStream = new FileInputStream(fromFilename);
            fileOutputStream = new FileOutputStream(toFilename);

            while ((readLen = fileInputStream.read(cache)) != -1){
                fileOutputStream.write(cache, 0, readLen);
            }

        }catch (IOException e){
            e.printStackTrace();
        }finally {
            try{
                fileInputStream.close();
                fileOutputStream.close();
            }catch (IOException e){
                e.printStackTrace();
            }
        }

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2061247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言函数详解(上)【库函数】

目录 前言 一、函数的概念 二、库函数 1.标准库和头文件 2.库函数使用方式 3.如何通过以上的网站查看库函数信息 (以sqrt为例) 3.1 功能 3.2 头文件包含 3.3 库函数文档的⼀般格式 1. 函数原型 ​编辑2. 函数功能介绍 ​编辑3. 参数和返…

vue路由导航简单实现

1.代码 安装路由模块 npm install vue-router 导入路由组件&#xff1a; import { createRouter, createWebHistory } from vue-router 首先创建三个vue组件显示路由内容&#xff1a; index.vue <template><!-- 首页跳转 --><router-link to"/my"&…

Ciallo~(∠・ω・ )⌒☆第二十四篇 python 异常处理

在Python中&#xff0c;异常处理是一种处理代码中发生错误的机制。它允许我们在运行时捕获和处理异常&#xff0c;以避免程序终止并提供错误信息。 一、try-except语句 try块用于包含可能发生异常的代码&#xff0c;而except块用于捕获和处理异常。一旦try块中的代码引发了异常…

8月21日笔记

Frp Frp(Fast e Reverse ) Proxy) 是一款简单&#xff0c;好用&#xff0c;稳定的隧道工具。Frp 使用 Go语言开发&#xff0c;支持跨平台&#xff0c;仅需下载对应平台的二进制文件即可执行&#xff0c;没有额外依赖。它是一款高性能的反向代理应用&#xff0c;可以轻松地进行…

机器人蓝牙通信绕坑

为机器人添加手机和语音控制是很有必要的&#xff0c;其中蓝牙通信有很多的坑。 一个是蓝牙模块版本&#xff0c;流行的2.0&#xff0c;4.0&#xff0c;5.0一旦买错&#xff0c;会十分麻烦&#xff0c;如果不懂编程&#xff0c;无法和板子通信&#xff0c;又连不上电脑和手机&…

用户画像中挖掘类标签的生产过程

背景 在用户画像中&#xff0c;除了用户的性别年龄等基础标签&#xff0c;我们还可以使用机器学习算法挖掘一些标签&#xff0c;比如用户购买意向等标签 技术方案 挖掘类标签的生产一般有以下的流程图&#xff0c;主要包括特征选择&#xff0c;也就是选择用户的哪些行为作为…

GATK AlleleList接口介绍

在 GATK&#xff08;Genome Analysis Toolkit&#xff09;中&#xff0c;AlleleList 接口是一个用来表示等位基因&#xff08;alleles&#xff09;列表的接口。Allele 是遗传学中用于表示某一特定基因座的不同形式的一个基本单位。AlleleList 接口定义了一些操作&#xff0c;使…

跨境电商系统架构分析

跨境电商系统是一个复杂而庞大的系统工程&#xff0c;涵盖了订单管理、支付管理、物流管理、报关管理、产品管理、跨境营销和数据分析等多个功能模块。这些模块相互协作&#xff0c;共同支撑起跨境电商的全球化运营。 订单管理&#xff1a;负责处理用户的订单信息&#xff0c;…

零基础学习Python(六)

1. 元类的应用 使用元类给对象添加一个固有属性author: 对类名进行限定&#xff0c;要求类名必须是大写字母开头&#xff1a; class MetaC(type):def __init__(cls, name, bases, attrs):if not name.istitle():raise TypeError("类名必须是大写字母开头~")return …

想提升网站排名?试试轮换IP

在竞争激烈的互联网环境中&#xff0c;提高网站排名是每个中小型网站主的共同目标。其中&#xff0c;轮换IP是一种不容忽视的优化工具。虽然听起来可能有些陌生&#xff0c;但轮换IP却能在提升网站排名方面发挥关键作用。本文将深入探讨轮换IP如何帮助中小型网站提升搜索引擎排…

南大-ICS2021 PA1~PA2.2 学习笔记记录

文章目录 代码github网址ICS2021其他博客基础设施: 简易调试器表达式求值词法分析递归求值如何测试自己的代码 监视点的实现扩展表达式求值的功能实现监视点 阅读源码 2译码执行用RTL表示指令行为实现常用的库函数实现常用的库函数 代码github网址 https://github.com/xiao-ta…

一主一从读写分离

目录 介绍 一主一从 原理 准备 配置主从复制 验证主从复制 一主一从读写分离 安装MyCat schema.xml配置 server.xml配置 测试 介绍 读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作&#xff0c;从数据库提供读操作&am…

Springboot中多线程数据库操作下的事务一致性问题的解决方案

文章目录 1 代码实现1.1 正常情况1.2 异常情况总结 1 代码实现 1.1 正常情况 我们采用手动开启事务的方式 public void add(CountDownLatch countDownLatch) {executor.submit(() -> {TransactionStatus transaction dataSourceTransactionManager.getTransaction(transa…

【HTML】HTML学习之引入CSS样式表

1、CSS样式规则 选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}2、HTML引入CSS样式表 2.1、行内式 行内式也称为内联样式&#xff0c;是通过标签的style属性来设置元素的样式&#xff0c;其基本语法格式如下: <标签名 style"属性1:属性值1; 属性2:属性值2;…

Proxy/Skeleton

设计模式之&#xff08;十二&#xff09;代理模式_skeleton proxy 模式-CSDN博客 在RMI中&#xff0c;客户端可以通过一个桩&#xff08;Stub&#xff09;对象与远程主机上的业务对象进行通信&#xff0c;由于桩对象和远程业务对象接口的一致&#xff0c;因此对于客户端而言&am…

Maven的一些相关知识【重修】《包括私服搭建!》

mvnrepository.com Maven 下载jar包的位置&#xff01; 【该部分有教程】 这是什么nb代码投稿视频-这是什么nb代码视频分享-哔哩哔哩视频

python之matplotlib (6 等高线和热力图)

等高线 import numpy as np import matplotlib.pyplot as pltdef f(x,y):return (1-x/2x**5y**3)*np.exp(-x**2-y**2) n256 xnp.linspace(-3,3,n) yx X,Ynp.meshgrid(x,y) plt.contourf(X,Y,f(X,Y),8,alpha0.75,cmapviridis) plt.colorbar() Cplt.contour(X,Y,f(X,Y),8,colors…

第64期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

免费图形化nginx管理工具nginxWebUI

nginxWebUI是一款图形化管理nginx配置得工具, 可以使用网页来快速配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, 静态html服务器, ssl证书自动申请、续签、配置等, 配置好后可一建生成nginx.conf文件, 同时可控制nginx使用此文件进行启动与重载, 完…

Linux基础软件-软件安装

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux进阶部分又分了很多小的部分,我们刚讲完了Linux日常运维。讲的那些东西都算是系统自带的&#xff0c;但是Linux作为一个…