【JAVA进阶】File类、字节流

java File和IO流处理 标准ASCALL字符集1、ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括了英文、符号等。2、标准ASCII使用1个字节存储一个字符首尾是0,总共可表示128个字符,对美国佬来说完全够用。GBK(汉字内码扩展规范,国标)1、汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。2、注意:GBK兼容了ASCII字符集。3、GBK规定:汉字的第一个字节的第一位必须是1。 阅读详情

📃个人主页:个人主页

🔥系列专栏:JAVASE基础

前言:

目前的编程中,数据存储方式有很多种,包括但不限于:

  1. 文件存储:将数据以文件的形式存储在磁盘上,可以使用文件读写操作进行数据的存取。

  2. 数据库存储:将数据以表格的形式存储在数据库中,可以使用SQL语句进行数据的管理。

  3. 缓存存储:将数据存储在缓存中,可以快速地读写数据,提高程序的效率。

  4. 内存存储:将数据存储在程序的内存中,可以快速地读写数据,但是程序结束后数据就会丢失。

以上存储方式都有各自的优缺点。文件存储的优点是简单易懂,缺点是读写速度相对较慢;数据库存储的优点是可以进行高级的数据管理,缺点是需要较高的技术水平;缓存存储的优点是读写速度快,缺点是需要占用较多的内存资源;内存存储的优点是读写速度最快,缺点是数据易丢失。

目录

前言:

一、File类

1.创建File对象

2.常用方法

3.File类的遍历功能

4.案例:检查谁没交作业

二、IO流

1.字节流

1.文件字节输入流:FileInputStream

2.文件字节输出流:FileOutputStream

3.文件拷贝

2.资源释放的方式

1.try-catch-finally

2.try-with-resource


一、File类

Java中的File类表示文件或目录的路径名。它可以用于创建、删除、重命名、复制文件或目录。File类中的一些常见的方法包括:

  1. exists():判断文件或目录是否存在。
  2. mkdir() / mkdirs():创建一个文件夹,mkdir() 创建单级目录,mkdirs() 创建多级目录。
  3. delete():删除文件或目录。
  4. renameTo():重命名文件或目录。
  5. isFile() / isDirectory():判断是否是文件或目录。
  6. canRead() / canWrite() / canExecute():判断文件或目录是否可读、可写、可执行。

另外,File类还可以用于获取文件或目录的属性信息,例如文件修改时间、文件大小等等。在Java中,File类被广泛地应用于文件操作和文件路径处理。

1.创建File对象

方法名称

说明

public File​(String pathname)

根据文件路径创建文件对象

public File​(String parent, String child)

根据父路径名字符串和子路径名字符串创建文件对象

public File​(File  parent, String child)

根据父路径对应文件对象和子路径名字符串创建文件对象

在Java中,可以使用File类来创建文件或目录的对象。

要创建一个File对象,你可以使用File类的构造函数,并向它传递文件或目录的路径作为参数。例如,如果要创建一个名为“myfile.txt”的文件对象,可以这样写:

File file = new File("myfile.txt");

如果你想在指定位置创建一个新的文件夹,可以使用相同的构造函数,并将目录路径作为参数:

File dir = new File("D:\\myFolder");

请注意,在使用File类创建对象时,它只是表示路径,而不涉及任何实际的文件或目录。因此,如果要使用这些文件或目录,你需要使用其他类和方法来读取、写入或操作它们。

绝对路径和相对路径

绝对路径和相对路径都是用来定位文件或目录的路径信息。

绝对路径是从根目录开始的完整路径,可以唯一地确定一个文件或目录的位置,如:C:\Users\Administrator\Desktop\test.txt。

相对路径是相对于当前目录的路径,可以通过与当前目录的相对位置来确定文件或目录的位置,如:..\Documents\test.txt,其中“..”表示当前目录的上级目录。

在使用路径时,需要根据需要选择使用绝对路径或相对路径,通常情况下,使用相对路径可以减少路径的长度,使路径更加简洁明了,但是如果需要确保路径的唯一性,则需要使用绝对路径。

2.常用方法

常用方法:判断文件类型、获取文件信息

  1. getPath():返回文件路径的字符串表示。
  2. getName():返回文件名。
  3. isDirectory():判断文件是否是目录。
  4. isFile():判断文件是否是普通文件。
  5. exists():判断文件是否存在。
  6. canRead():判断是否可读取文件。
  7. canWrite():判断是否可写入文件。
  8. length():返回文件的大小,以字节为单位。
  9. listFiles():返回此目录中包含的文件和目录的文件数组。

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        // 实例化一个文件对象
        File file = new File("D:/test.txt");

        // 调用getPath()方法获取文件路径
        String path = file.getPath();
        System.out.println("文件的路径为:" + path);

        // 调用getName()方法获取文件名
        String name = file.getName();
        System.out.println("文件名为:" + name);

        // 调用isDirectory()方法判断是否是目录
        boolean isDir = file.isDirectory();
        System.out.println("是否是目录:" + isDir);

        // 调用exists()方法判断文件是否存在
        boolean isExist = file.exists();
        System.out.println("文件是否存在:" + isExist);

        // 调用length()方法获取文件大小
        long size = file.length();
        System.out.println("文件大小为:" + size + "字节");
    }
}

常用方法:创建文件、删除文件功能

  1. createNewFile():创建一个新的空的文件
  2. mkdir():只能创建一级文件夹
  3. mkdirs():可以创建多级文件夹
  4. delete​():删除由此抽象路径名表示的文件或空文件夹

创建文件:

File file = new File("example.txt");
try {
    if (file.createNewFile()) {
        System.out.println("文件创建成功!");
    } else {
        System.out.println("文件已存在!");
    }
} catch (IOException e) {
    e.printStackTrace();
}

在上述代码中,我们首先创建一个File对象,指定了新文件的路径。然后,我们使用createNewFile()方法创建该文件。如果文件创建成功,该方法返回 true;否则返回 false。如果文件已经存在,我们不会创建新文件,并提示用户文件已存在。

删除文件:

File file = new File("example.txt");
if (file.delete()) {
    System.out.println("文件已删除!");
} else {
    System.out.println("文件删除失败!");
}

在上述代码中,我们首先创建一个File对象,指定待删除的文件路径。然后,我们使用delete()方法删除该文件。如果文件删除成功,该方法返回 true;否则返回 false。如果文件不存在,该方法也会返回 false。

注意 delete方法默认只能删除文件和空文件夹,delete方法直接删除不走回收站

3.File类的遍历功能

Java中的File类提供了多种方法来遍历文件和目录。以下是一些常见的方法:

1.list()方法:返回指定目录下的所有文件和目录的名称数组。

File file = new File("/path/to/directory");
String[] files = file.list();
for (String fileName : files) {
    System.out.println(fileName);
}

2.listFiles()方法:返回指定目录下的所有文件和目录的File对象数组。

File file = new File("/path/to/directory");
File[] files = file.listFiles();
for (File f : files) {
    System.out.println(f.getName());
}

listFiles方法注意事项:

  • 当文件不存在时或者代表文件时,返回null
  • 当文件对象代表一个空文件夹时,返回一个长度为0的数组
  • 当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
  • 当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
  • 当没有权限访问该文件夹时,返回null

4.案例:检查谁没交作业

MySQL+Java实现

例如:同学们按:学号.txt  这样的格式交作业,利用 File类+MySQL     来 查询谁没交作业。

(实际中 可能大家按  学号-姓名-班级  这样的格式收作业,到时候只需变更部分Java代码即可 )

1. 把班级信息导入数据库中:

表结构:

 模拟数据:

INSERT INTO Student (id,name) VALUES ('00001','农修平');
INSERT INTO Student (id,name) VALUES ('00002','贲新觉');
INSERT INTO Student (id,name) VALUES ('00003','容文滨');
INSERT INTO Student (id,name) VALUES ('00004','范姜雨文');
INSERT INTO Student (id,name) VALUES ('00005','商自怡');
INSERT INTO Student (id,name) VALUES ('00006','单幻枫');
INSERT INTO Student (id,name) VALUES ('00007','黄靖巧');
INSERT INTO Student (id,name) VALUES ('00008','寸开济');
INSERT INTO Student (id,name) VALUES ('00009','谯文山');
INSERT INTO Student (id,name) VALUES ('00010','之依柔');
INSERT INTO Student (id,name) VALUES ('00011','殴德本');
INSERT INTO Student (id,name) VALUES ('00012','纪晓槐');
INSERT INTO Student (id,name) VALUES ('00013','农从南');
INSERT INTO Student (id,name) VALUES ('00014','沃新竹');
INSERT INTO Student (id,name) VALUES ('00015','米文彦');
INSERT INTO Student (id,name) VALUES ('00016','应元彤');
INSERT INTO Student (id,name) VALUES ('00017','田笑旋');
INSERT INTO Student (id,name) VALUES ('00018','红华藏');
INSERT INTO Student (id,name) VALUES ('00019','宇文晓槐');
INSERT INTO Student (id,name) VALUES ('00020','广书芹');
INSERT INTO Student (id,name) VALUES ('00021','羊浩宕');
INSERT INTO Student (id,name) VALUES ('00022','喻晗');
INSERT INTO Student (id,name) VALUES ('00023','南宫雨雪');
INSERT INTO Student (id,name) VALUES ('00024','皮千山');
INSERT INTO Student (id,name) VALUES ('00025','逯映之');
INSERT INTO Student (id,name) VALUES ('00026','江天材');
INSERT INTO Student (id,name) VALUES ('00027','荆浩气');
INSERT INTO Student (id,name) VALUES ('00028','呼延芸');
INSERT INTO Student (id,name) VALUES ('00029','乜修齐');
INSERT INTO Student (id,name) VALUES ('00030','司徒德明');
INSERT INTO Student (id,name) VALUES ('00031','班听枫');
INSERT INTO Student (id,name) VALUES ('00032','公叔安波');
INSERT INTO Student (id,name) VALUES ('00033','京馡');
INSERT INTO Student (id,name) VALUES ('00034','万俟荭');
INSERT INTO Student (id,name) VALUES ('00035','尚兴昌');
INSERT INTO Student (id,name) VALUES ('00036','暨冷亦');
INSERT INTO Student (id,name) VALUES ('00037','别良平');
INSERT INTO Student (id,name) VALUES ('00038','居水 竹');
INSERT INTO Student (id,name) VALUES ('00039','郭怜梦');
INSERT INTO Student (id,name) VALUES ('00040','年映秋');
INSERT INTO Student (id,name) VALUES ('00041','毋阳辉');
INSERT INTO Student (id,name) VALUES ('00042','吕旭');
INSERT INTO Student (id,name) VALUES ('00043','国伟彦');
INSERT INTO Student (id,name) VALUES ('00044','安锐进');
INSERT INTO Student (id,name) VALUES ('00045','杨凝雁');
INSERT INTO Student (id,name) VALUES ('00046','南宫亨');
INSERT INTO Student (id,name) VALUES ('00047','却雅阳');
INSERT INTO Student (id,name) VALUES ('00048','富小霜');
INSERT INTO Student (id,name) VALUES ('00049','汲力学');
INSERT INTO Student (id,name) VALUES ('00050','慎姲');

 

2.Java 获取交作业同学的 学号

模拟数据:创建 50 个  5 位数字的 txt 文件

public class Main {
    public static void main(String[] args) {
        // 创建名为 "example" 的文件夹
        File folder = new File("example");
        if (!folder.exists()) {
            folder.mkdir();
        }

        // 创建 50 个 5 位数字的 txt 文件
        for (int i = 1; i < 51; i++) {

            String fileName = String.format("%05d.txt", i);
            File file = new File(folder, fileName);
            try {
                file.createNewFile();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

   



    }
}

获取学号:

因为格式是  学号.txt  格式,所以  把.txt切割掉 就能获得学号:

   String[] list = folder.list();
        for (String s : list) {
            int i = s.indexOf(".");

            System.out.print("'"+s.substring(0,i)+"',");
        }

 把文件中的  00004   00033  00021 00041 删除【假设这4人没交作业】

 然后再次运行Java程序:

'00001','00002','00003','00005','00006','00007','00008','00009','00010','00011','00012','00013','00014','00015','00016','00017','00018','00019','00020','00022','00023','00024','00025','00026','00027','00028','00029','00030','00031','00032','00034','00035','00036','00037','00038','00039','00040','00042','00043','00044','00045','00046','00047','00048','00049','00050',

3.查询结果

编写SQL:

SELECT * FROM student WHERE  id NOT IN()

括号里面放Java控制台上的数据

SELECT * FROM student WHERE  id NOT   IN('00001','00002','00003','00005','00006','00007','00008','00009','00010','00011','00012','00013','00014','00015','00016','00017','00018','00019','00020','00022','00023','00024','00025','00026','00027','00028','00029','00030','00031','00032','00034','00035','00036','00037','00038','00039','00040','00042','00043','00044','00045','00046','00047','00048','00049','00050')

 此时就能查询到有那些同学没有交作业:

二、IO流

IO流概述

  • I表示intput,把硬盘文件中的数据读入到内存的过程,称之输入,负责读。
  • O表示output,把内存中的数据写出到硬盘文件的过程,称之输出,负责写。

 IO流的分类

 总结流的四大类:

  • 字节输入流:以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流称为字节输入流。
  • 字节输出流:以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流称为字节输出流。
  • 字符输入流:以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流称为字符输入流。
  • 字符输出流:以内存为基准,把内存中的数据以字符写出到磁盘文件或者网络介质中去的流称为字符输出流。

1.字节流

Java字节流是Java IO中处理二进制数据的基本方式。字节流指的是以字节为单位读写数据的流,而字符流则是以字符为单位读写数据的流。字节流可以处理任何类型的数据,包括文本、图像、音频和视频等。Java字节流主要分为输入字节流和输出字节流两种,其中,输入字节流用于从文件或其他数据源读取数据,而输出字节流用于将数据写入文件或其他数据目标。

Java字节流的操作对象通常是InputStream和OutputStream类及其子类。InputStream和OutputStream是两个抽象基类,分别表示字节输入流和输出流的基本操作。Java中常用的输入字节流有FileInputStream、ByteArrayInputStream等,常用的输出字节流有FileOutputStream、ByteArrayOutputStream等。

1.文件字节输入流:FileInputStream

作用:以内存为基准,把磁盘文件中的数据以字节的形式读取到内存中去。

构造器

说明

public FileInputStream​(File file)

创建字节输入流管道与源文件对象接通

public FileInputStream​(String pathname)

创建字节输入流管道与源文件路径接通

方法名称

说明

public int read()

每次读取一个字节返回,如果字节已经没有可读的返回-1

public int read(byte[] buffer)

每次读取一个字节数组返回,如果字节已经没有可读的返回-1

在D盘创建一个名为:test.txt的文档 ,然后里面随便输入一些英文:

 

 

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

public class FileInputStreamExample {
    public static void main(String[] args) {
        File file = new File("D:/test.txt");
        try (FileInputStream fis = new FileInputStream(file)) {
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例代码中,我们创建了一个FileInputStream对象来读取指定文件中的字节流。然后,我们使用read()方法逐字节读取文件内容,并将其转换为字符类型并打印出来。

如果在内容里面写入中文:

  直接乱码了:

 
分析原因:

UTF-8编码 一个中文一般以三个字节的形式存储。

所以,对于中文 需要每次3个字节地读取。

解决方案:

创建一个长度为3的字节数组,每次读取 该字节数组。

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

public class FileInputStreamExample {
    public static void main(String[] args) {
        File file = new File("D:/test.txt");
        try (FileInputStream fis = new FileInputStream(file)) {
            byte[] bytes = new byte[3];
            while ((fis.read(bytes)) != -1) {
                System.out.print(new String(bytes));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

上面例子中,中文符号前面刚好是有6个英文符号,咋们是3个字节地去读,如果把5个英文符号变成5个,又会发生什么呢?

 又出现了乱码:

 分析原因:

 我们是3个字节地去读,到   N-热  这里,  “N- ”  已经站2个字节,而 “热” 占3个字节 不能读完,故此乱码。

解决方案:

方式一  

自己定义一个字节数组与文件的大小一样大,然后使用读取字节数组的方法,一次性读取完成。

方法名称

说明

public int read(byte[] buffer)

每次读取一个字节数组返回,如果字节已经没有可读的返回-1

方式二  

官方为字节输入流InputStream提供了如下API可以直接把文件的全部数据读取到一个字节数组中

方法名称

说明

public byte[] readAllBytes() throws IOException

直接将当前字节输入流对应的文件对象的字节数据

装到一个字节数组返回

思考:

1、使用字节流读取中文输出乱码,如何使用字节输入流读取中文输出不乱码呢?

定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。

2、直接把文件数据全部读取到一个字节数组可以避免乱码,是否存在问题?

如果文件过大,字节数组可能引起内存溢出。

2.文件字节输出流:FileOutputStream

作用:以内存为基准,把内存中的数据以字节的形式写出到磁盘文件中去的流。

构造器

说明

public FileOutputStream​(File file)

创建字节输出流管道与源文件对象接通

public FileOutputStream​(File file,boolean append)

创建字节输出流管道与源文件对象接通,可追加数据

public FileOutputStream​(String filepath)

创建字节输出流管道与源文件路径接通

public FileOutputStream​(String filepath,boolean append)

创建字节输出流管道与源文件路径接通,可追加数据

文件字节输出流(FileOutputStream)写数据出去的API

方法名称

说明

public void write(int a)

写一个字节出去

public void write(byte[] buffer)

写一个字节数组出去

public void write(byte[] buffer , int pos , int len)

写一个字节数组的一部分出去。

流的关闭与刷新

方法

说明

flush()

刷新流,还可以继续写数据

close()

关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据

Java中的文件字节输出流用于向文件中写入数据。它可以将字节数组、字符串、单个字节以及任何实现了WritableByteChannel接口的对象写入文件。FileOutputStream是Java IO库中的一个类,用于创建一个输出流对象,可以将数据写入一个文件中。

以下是一个示例:

import java.io.*;

public class FileOutputStreamExample {
    public static void main(String[] args) {
        try {
            // 创建一个文件输出流对象
            FileOutputStream fileOutput = new FileOutputStream("output.txt");
            
            // 写入一个字符串到文件中
            String str = "Hello World!";
            fileOutput.write(str.getBytes());
            
            // 关闭输出流
            fileOutput.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例代码中,我们首先创建了一个FileOutputStream对象,指定了输出文件的路径和名称。然后,我们使用write()方法将一个字符串写入到文件中。最后,我们关闭了输出流。

注意:在使用文件输出流时,如果指定的路径中不存在该文件,则会自动创建该文件;如果文件已经存在,则该文件的内容将被覆盖。

字节输出流如何实现数据追加?

public FileOutputStream​(String filepath,boolean append)

创建字节输出流管道与源文件路径接通,可追加数据

import java.io.*;

public class FileOutputStreamExample {
    public static void main(String[] args) {
        try {
            // 创建一个文件输出流对象
            FileOutputStream fileOutput = new FileOutputStream("output.txt",true);

            // 写入一个字符串到文件中
            String str = "热爱编程的小白白";
            fileOutput.write(str.getBytes());

            // 关闭输出流
            fileOutput.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

再次运行:

字节输出流如何实现写出去的数据能换行?

fileOutput.write(“\r\n”.getBytes())

3.文件拷贝

你可以使用Java中的IO流来实现文件拷贝。以下是一个基本的文件拷贝示例:

import java.io.*;

public class FileCopy {

    public static void main(String[] args) {

        String sourceFile = "path/to/source/file"; // 源文件路径
        String destFile = "path/to/destination/file"; // 目标文件路径

        try (InputStream in = new FileInputStream(new File(sourceFile));
             OutputStream out = new FileOutputStream(new File(destFile))) {

            byte[] buffer = new byte[1024]; // 缓冲区大小,可以自己调整
            int length;

            while ((length = in.read(buffer)) > 0) {
                out.write(buffer, 0, length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用了InputStream和OutputStream来从源文件读取和写入到目标文件。我们还使用了缓冲区来存储读取的数据。最后,在try块的末尾关闭了输入和输出流。

注意,这只是一个基本的示例,还有很多方法可以优化和改进代码。

字节流适合做一切文件数据的拷贝吗?

任何文件的底层都是字节,拷贝是一字不漏的转移字节,只要前后文件格式、编码一致没有任何问题。

2.资源释放的方式

1.try-catch-finally

  • finally:放在try-catch后面的,无论是正常执行还是异常执行代码,最后一定要执行,除非JVM退出。
  • 作用:一般用于进行最后的资源释放操作(专业级做法)

finally代码块是最终一定要执行的,可以在代码执行完毕的最后用于释放资源。 

2.try-with-resource

1. finally虽然可以用于释放资源,但是释放资源的代码过于繁琐?

2. 有没有办法简化?

JDK 7和JDK9中都简化了资源释放操作

示例(文件拷贝):

import java.io.*;

public class FileCopy {

    public static void main(String[] args) {

        String sourceFile = "path/to/source/file"; // 源文件路径
        String destFile = "path/to/destination/file"; // 目标文件路径

        try (InputStream in = new FileInputStream(new File(sourceFile));
             OutputStream out = new FileOutputStream(new File(destFile))) {

            byte[] buffer = new byte[1024]; // 缓冲区大小,可以自己调整
            int length;

            while ((length = in.read(buffer)) > 0) {
                out.write(buffer, 0, length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意

JDK 7 以及 JDK 9的()中只能放置资源对象,否则报错

什么是资源呢?

资源都是实现了Closeable/AutoCloseable接口的类对象

Java语法进阶 一、Object类、常用API二、Collection、泛型三、List、Set、数据结构、Collections四、Map与斗地主案例五、异常、线程目标: 1、说出进程的概念 2、说出线程的概念 3、能够理解并发与并行的区别 4、能够开启新线程4.1 并发与并行4.2 线程与进程进程: 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。进程: 线程是进程 阅读详情

相关推荐

java之文件操作

文件就是保存数据的地方,例如:word文档,txt文件,Excel文件等都是文件,它可以保存一张图片,也可以保存视频,声音等…流:数据在数据源(文件)和程序(内存)之间经历的路径。输入流:数据从数据源(文件)到程序(内存)的路径。输出流:数据从程序(内存)到数据源(文件)的路径。文件在程序中是以流的形式来操作的。

m0_64365419的博客 384

Java实现对象文件存储的三种方式(本地存储、OSS存储、Minio存储)

阿里云OSS对象存储是一款海量、安全、低成本、高可靠的云存储服务。使用OSS可以通过网络随时存储和调用包括音频、视频和图片在内的文件。

weixin_72084279的博客 3989

基于Java实现分布式文件存储的集成方案:使用Minio

Minio提供了简单易用的API,可以用于上传、下载和删除文件。使用Java编程语言,我们可以方便地连接到Minio服务器,并对文件进行操作。在代码中连接到Minio服务器,需要提供Minio服务器的地址、访问密钥和访问密钥ID。使用MinioClient对象可以上传文件到Minio服务器。使用MinioClient对象可以从Minio服务器下载文件。使用MinioClient对象可以从Minio服务器删除文件。基于Java实现分布式文件存储的集成方案:使用Minio。步骤3:上传文件到Minio服务器。

CodeShiftZ的博客 514

Java基础——存储

一些字符如果用像素点表示的话太大故而采用字符集表示(ASCll编码),存储位置只记录文档左上角的坐标,颜色则单独存储。计算机进行存储时是将源码转化为补码进行计算,最后再从右向左以存储数据类型的大小保留位数。反码:对于正数来说不变,负数来说除第一位符号位不变以外0->1,1->0.1.局部变量在栈中存字符串常量池里面的地址,相同字符串共用,减少内存损耗。a和b是引用类型,引用类型作比较是判断地址,而基本数据类型则是判断值。3. == 基本数据类型比较的是数值,而对于引用类型则是判断地址。

Jeremy486的博客 983

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

LMK04821时钟芯片SPI配置避坑指南:从寄存器读写到频率校准全流程

本文详细解析了LMK04821时钟芯片的SPI配置全流程,涵盖寄存器读写、频率校准及JESD204B系统设计中的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决时钟输出异常、同步失败等常见问题,提升高速数据采集系统的时钟稳定性。

weixin_29172963的博客 159

Java基础进阶_day10_(File类,IO,字节流)

File类 IO流

Somnus blog 803

给STM32F4装上耳朵:用麦克风模块和Keil MDK实现你的第一个语音指令(附完整代码)

本文详细介绍了如何使用STM32F4开发板和麦克风模块实现简单的语音指令识别系统。通过Keil MDK开发环境配置、ADC音频采样、语音活动检测和模板匹配算法,开发者可以快速构建响应'开灯'、'关灯'等基础指令的语音交互方案。文章包含完整代码实现和调试技巧,特别适合STM32初学者入门语音识别领域。

weixin_29171087的博客 434

Java基础进阶 IO体系结构 File类 递归 字节流 D190402

Java基础进阶 IO体系结构 File类、递归、字节流 01.第一章:File类_概述: 1).java.io.File(类):它可以表示磁盘上的一个文件/目录,它包含了一些方法,可以获取磁盘上这个 文件/目录的一些属性信息:文件大小、名称、路径、最后时间、是否可读、是否可写。 注意:File类不能读、写文件内容。 需要读写文件内容,要用到IO流的类。 02.第一章:File类_File类的构造...

xc965746550的博客 243

鸿蒙OS+UniApp文件上传实战:如何解决大文件分片上传的3大坑?

本文深入探讨鸿蒙OS与UniApp结合实现大文件分片上传的实战方案,重点解决分片策略设计、网络中断处理和进度管理三大技术难题。通过鸿蒙分布式特性与UniApp跨平台能力的结合,提供动态分片调整、断点续传和跨设备进度同步等优化方案,显著提升大文件上传成功率和用户体验。

weixin_29250403的博客 474

kernel: TCP: out of memory -- consider tuning tcp_mem 问题处理记录

参数名 说明 net.ipv4.tcp_max_tw_buckets = 6000 系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值将立刻被清楚并输出警告信息。默认值为180000。对于squid来说效果不是很大,但可以控制TIME_WAIT套接字最大值,避免squid服务器被拖死。 net.ipv4.tcp_rmem = 4096 87380 4194304 接收窗口的最大大小...

weixin_46691674的博客 6892

JAVA入门基础进阶(十二)—— File类、字节流、字节缓冲流

文章目录1.File类1.1File类概述和构造方法【应用】1.2绝对路径和相对路径【理解】1.3File类创建功能【应用】1.4File类删除功能【应用】1.5File类判断和获取功能【应用】1.6File类练习一【应用】1.7File类练习二【应用】1.8File类练习三【应用】2.字节流2.1 IO流概述和分类【理解】2.2字节流写数据【应用】2.3字节流写数据的三种方式【应用】2.4字节流写数据的两个小问题【应用】2.5字节流写数据加异常处理【应用】2.6字节流读数据(一次读一个字节数据)【应用】2

weixin_50594210的博客 612

交通规划仿真软件:TransCAD_(7).公交系统规划与分析

通过TransCAD进行公交系统规划与分析,可以有效地评估公交网络的性能,优化线路设计,提高服务质量。数据准备、模型建立、仿真运行和结果分析是公交系统规划与分析的关键步骤。在实际应用中,规划者和分析师可以根据仿真结果提出具体的优化建议,不断完善公交系统的运行效率和乘客体验。

kkchenjj的博客 955

【02】Java进阶:12-File类、递归、IO概述、字节流、字符流、

day12【File类、递归、IO流、字节流、字符流】 今日内容 File类 递归 IO流 字节流 字符流 教学目标 能够说出File对象的创建方式 能够使用File类常用方法 能够辨别相对路径和绝对路径 能够遍历文件夹 能够解释递归的含义 能够使用递归的方式计算5的阶乘 能够说出使用递归会内存溢出隐患的原因 能够说出IO流的分类和功能 能够使用字节输出流写出数据到文件 能够使用字节输入流读取数据到程序 能够理解读取数据read(byte[])方法的原理 能够使用字节流完成文件

忘尘丶莫负的博客 315

把 SAP BTP Destination 写进 MTA:一段 com.sap.application.content 配置背后的部署编排学

MTA内容模块解析:SAP BTP中的声明式部署机制 本文详细解析了mta.yaml中com.sap.application.content模块在SAP BTP云环境中的作用。该模块通过声明式配置实现内容投递,无需编译或部署代码。核心功能包括: Destination创建:通过content-target:true标识将配置投递到Destination服务 HTML5应用部署:将静态资源投递到HTML5 Application Repository 安全集成:配置XSUAA服务实现OAuth2用户令牌交换

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

Java 进阶学习笔记day_10 (File类、IO、字节流、字符流)

File类 java.io.File 类是用来表示文件或者文件夹路径,可以用于对文件和文件夹的创建、查找和删除等操作 绝对路径:从盘符开始的路径,这是一个完整的路径 相对路径:相对于项目目录的路径,这是一个便捷的路径 构造方法_ - public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 - public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例 -

weixin_43754657的博客 671

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【java 13天进阶Day08】File类 ,字节流,字符流, 缓冲流、转换流

字节输入流字节输出流字符输入流字符输出流ReaderWriter(抽象类)FileReaderFileWriter(实现类,低级流)BufferedWriter(实现类,缓冲流)缓冲流分为四类:(1)BufferedInputStream:字节缓冲输入流,可以提高字节输入流读数据的性能。(2)BufferedOutStream: 字节缓冲输出流,可以提高字节输出流写数据的性能。(3)BufferedReader: 字符缓冲输入流,可以提高字符输入流读数据的性能。

weixin_45658815的博客 615

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java学习--基础知识进阶第九天-- File类、字符流与字节流

今日内容介绍 u File类 u 字符流与字节流 第1章 File类 1.1 File概述 打开API,搜索File类。阅读其描述:File文件和目录(文件夹)路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可,那么我们就要研究研究File这个类中都有那些功能可以操作文件或者文件...

weixin_30487317的博客 106

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

day18 IO流01 File类 字符编码 IO流操作(四大基流,字节流,字符流)-> java基础大神进阶学习总结之19天(知识点全面覆盖,细节)

java基础总结 day18 IO流01 File类 字符编码 IO流操作(四大基流,字节流,字符流) File类 ​ File课理解为文件和文件夹(目录),用于表示磁盘中某个文件或文件夹的路径。该类包含了文件的创建、删除、重命名、判断是否存在等方法。 ​ Windows: 默认情况下是不区分大小写的,使用”\”来分割目录路径。但是在Java中一个”\”表示转义,所以在Windows系统中就得使用两个”\\”。 操作File常见方法: String getName():获取文件名称

weixin_41340417的博客 392

JAVA SE自学 基础篇 (十三)IO基础 什么是IO java.io.File 字节流 过滤流 对象流与对象序列化 对象克隆 字符流

JAVA SE自学 基础篇 IO基础什么是IOjava.io.File字节流过滤流 目标 IO的概念 java.io.file类 字节流 过滤流 对象流 对象序列化与反序列化 对象克隆 什么是IO 不同介质之间的数据传输其实就是IO I ( input ),输入,也称为读 O( output ),输入,也称为写 常见的IO发生于: 程序 ---- 磁盘 程序 ---- 程序 程序 --...

看书就想睡觉的博客 327

Java进阶--IO流

我们把数据的传输,可以看做是种数据的流动,按照流动的向,以内存为基准,分为输input 和输出output ,即流向内存是输流,流出内存的输出流。Java中I/O操作主要是指使java.io包下的内容,进输、输出操作。输也叫做读取数据,输出也叫做作写出数据。

2509_94199695的博客 772
上一篇: MySQL小练习(使用JDBC操作数据库)
下一篇: 【SpringMVC】入门案例
热爱编程的小白白
热爱编程的小白白 新星计划导师 新星计划导师
博客等级 码龄5年 11万+粉丝 243原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱编程的小白白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值