【Day08-IO-文件字节流】

news2024/12/24 20:43:54

File

        1. 概述

        File对象既可以代表文件、也可以代表文件夹。它封装的对象仅仅是一个路径名,这个路径可以存在,也可以不存在

构造器

说明

public File​(String pathname)

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

public File​(String parent, String child)

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

public File​(File  parent, String child)

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

        1、File类构建对象的方式是什么样的?File的对象可以代表哪些东西?

                File file = new File(“文件/文件夹/绝对路径/相对路径”);

        2、绝对路径和相对路径是什么意思?

                绝对路径是带盘符的。

                相对路径是不带盘符的,默认到当前工程下寻找文件。

        2. File提供的判断文件类型、获取文件信息功能

方法名称

说明

public boolean exists()

判断当前文件对象,对应的文件路径是否存在,存在返回true

public boolean isFile()

判断当前文件对象指代的是否是文件,是文件返回true,反之。

public boolean isDirectory()

判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。

public String getName()

获取文件的名称(包含后缀)

public long length()

获取文件的大小,返回字节个数

public long lastModified()

获取文件的最后修改时间。

public String getPath()

获取创建文件对象时,使用的路径

public String getAbsolutePath()

获取绝对路径

/*
常用方法1:判断文件类型、获取文件信息
    boolean exists() 判断文件路径是否存在
    boolean isFile() 判断是否是文件(不存在的都是false)
    boolean isDirectory() 判断是否是文件夹(不存在的都是false)
    String getName() 获取文件/文件名,包含后缀
    long length() 获取文件大小,返回字节个数
    long lastModified() 获取最后修改时间
    string getPath() 获取创建对象时的路径
    String getAbsolutePath() 获取对象绝对路名
*/
public class Demo2 {
    public static void main(String[] args) {
        File f1 = new File("day08-code/test1");//文件夹-已存在
        File f2 = new File("day08-code/test1/1.txt");//文件-已存在

        File f3 = new File("day08-code/test2");//文件夹-不存在
        File f4 = new File("day08-code/test2/2.txt");//文件-不存在

        //boolean exists() 判断文件路径是否存在
        System.out.println(f1.exists());//true
        System.out.println(f3.exists());//false
        //boolean isFile() 判断是否是文件
        System.out.println(f2.isFile());//true
        System.out.println(f4.isFile());//false
        //boolean isDirectory() 判断是否是文件夹
        System.out.println(f1.isDirectory());//true
        System.out.println(f2.isDirectory());//false
        //String getName() 获取文件/文件名,包含后缀
        System.out.println(f2.getName());//1.txt
        //long length() 获取文件大小,返回字节个数
        System.out.println(f2.length());//0
        //long lastModified() 获取最后修改时间
        System.out.println(f2.lastModified());//1697894961950
        //string getPath() 获取创建对象时的路径
        System.out.println(f2.getPath());//day08-code\test1\1.txt
        //String getAbsolutePath() 获取对象绝对路径
        System.out.println(f2.getAbsolutePath());//D:\ITheima\code\SE-advance\day08-code\test1\1.txt
    }
}

        3. File类创建和删除文件的功能

方法名称

说明

public boolean mkdir()

只能创建一级文件夹

public boolean mkdirs()

可以创建多级文件夹

public boolean createNewFile()

创建一个新的空的文件

方法名称

说明

public boolean delete​()

删除文件、空文件夹

注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站

/*
File创建和删除方法
    boolean mkdir()   创建单级文件夹,创建失败返回false
    boolean mkdirs()   创建多级文件夹 (常用)

    boolean createNewFile()  创建文件,文件存在返回false

    boolean delete()  删除文件或空文件夹,删除失败返回false (注意: 删除方法不走回收站,填用)
*/
public class Demo3 {
    public static void main(String[] args) throws IOException {
        File f1 = new File("day08-code/test2");
        File f2 = new File("day08-code/test2/test3");
        File f3 = new File("day08-code/test2/2.txt");
        File f4 = new File("day08-code/test2/2");

        //boolean mkdir()   创建单级文件夹,创建失败返回false
//        System.out.println(f1.mkdir());//true ,已存在再次创建会失败
        //boolean mkdirs()   创建多级文件夹 (常用)
//        System.out.println(f2.mkdirs());//true
        //boolean createNewFile()  创建文件,文件存在返回false
//        System.out.println(f3.createNewFile());//true
//        System.out.println(f4.createNewFile());//true 空白格式
        //boolean delete()  删除文件或空文件夹,删除失败返回false (注意: 删除方法不走回收站,填用)
//        System.out.println(f2.delete());//true 删除多级文件会失败
    }
}

         4.File类提供的遍历文件夹的功能

方法名称

说明

public String[] list()

获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。

public File[] listFiles()

获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)

         使用listFiles方法时的注意事项

  • 当主调是文件,或者路径不存在时,返回null
  • 当主调是空文件夹时,返回一个长度为0的数组
  • 当主调是一个非空文件夹,但是没有权限访问该文件夹时,返回null
/*
查看目录中的内容
    String[] list()	获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
    File[] listFiles()	获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回,包含隐藏文件(重点)

注意事项
    当主调是文件,或者路径不存在时,返回null
    当主调是空文件夹时,返回一个长度为0的数组
    当主调是一个非空文件夹,但是没有权限访问该文件夹时,返回null
*/
public class Demo4 {
    public static void main(String[] args) {
        File file = new File("D:\\code\\SE-advance\\day08-code");
        //String[] list()  返回文件名数组
        String[] names = file.list();
        for (String name : names) {
            System.out.println(name);
        }
        //File[] listFiles() 返回文件数组
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.print(file1);
            if (file1.isFile()) {
                System.out.println("--是文件");
            } else {
                System.out.println("--是文件夹");
            }
        }
    }
}

        5. 案例:

/*
需求:
    从D:盘中,搜索“QQ.exe” 这个文件,找到后直接输出其位置。
分析:
    先找出D:盘下的所有一级文件对象
    遍历全部一级文件对象,判断是否是文件
    如果是文件,判断是否是自己想要的
    如果是文件夹,需要继续进入到该文件夹,重复上述过程
*/
public class Demo5 {
    public static void main(String[] args) {
        File parent = new File("D:\\");
        findFile(parent, "QQ.exe");
    }

    public static void findFile(File parent, String filename) {
        //获取当前目录所有文件夹
        File[] files = parent.listFiles();
        //判断当前文件是否为空,或不存在
        if (files == null || files.length == 0) {
            return;
        }
        //循环遍历所有文件、文件夹
        for (File file : files) {
            //判断当前file是否是文件
            if (file.isFile()) {
                if (file.getName().equals(filename)) {
                    //如果是文件:判断文件的名称和查找的文件是否一致
                    System.out.println(file.getAbsolutePath());
                }
            } else {
                //如果不是文件,进入文件夹继续查找
                findFile(file, filename);
            }
        }
    }
}

字符集

        1. 标准ASCII字符集

        ASCII(American Standard Code for Information Interchange): 美国信息交换标准代码,包括了英文、符号等。

        标准ASCII使用1个字节存储一个字符,首尾是0,总共可表示128个字符,对美国佬来说完全够用。

        GBK(汉字内码扩展规范,国标)

  • 汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储
  • 注意:GBK兼容了ASCII字符集。

1、常见字符集有哪些?各自存储数据的特点是什么?

        ASCII字符集: 只有英文、数字、符号等,占1个字节。

        GBK字符集:   汉字占2个字节,英文、数字占1个字节。

        UTF-8字符集:汉字占3个字节,英文、数字占1个字节。

        2. 字符集的编码、解码操作 

        Java代码完成对字符的编码

String提供了如下方法

说明

byte[] getBytes​()

使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中

byte[] getBytes​(String charsetName)

使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中

        Java代码完成对字符的解码

String提供了如下方法

说明

String​(byte[] bytes)

通过使用平台的默认字符集解码指定的字节数组来构造新的String

String​(byte[] bytes, String charsetName)

通过指定的字符集解码指定的字节数组来构造新的String

注意字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码

/*
编码: 字符-->字节
    byte[] getBytes()	使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中
    byte[] getBytes(String charsetName)	使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中

解码: 字节-->字符
    String(byte[] bytes)	通过使用平台的默认字符集解码指定的字节数组来构造新的String
    String(byte[] bytes, String charsetName)	通过指定的字符集解码指定的字节数组来构造新的String
*/
public class Demo2 {

    public static void main(String[] args) throws UnsupportedEncodingException {
        //编码: 字符-->字节
        String str = "你爱wo";
//        byte[] bytes = str.getBytes();//8 默认是计算机自己的字符串集
        byte[] bytes = str.getBytes("GBK");//6
        System.out.println(bytes.length);

        //解码: 字节-->字符
//        String s = new String(bytes);//�㰮wo 默认也是计算机上的
        String s = new String(bytes, "GBK");//你爱wo
        System.out.println(s);
    }
}

1、如何使用Java程序对字符进行编码?

String类下的方法:

byte[] getBytes​()使用默认字符集编码

byte[] getBytes​(String charsetName)使用指定字符集编码

2、如何使用Java程序对字节进行解码?

String类的构造器:

String​(byte[] bytes):使用默认字符集解码

String​(byte[] bytes, String charsetName))使用指定字符集解码

IO

        1. IO流的分类

IO总体来看就有四大流

字节输入流:以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流

字节输出流:以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流。

字符输入流:以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流。

字符输出流:以内存为基准,把内存中的数据以字符写出到磁盘文件或者网络介质中去的流。

        1、IO流的作用?

读写文件数据的

        2、IO流是怎么划分的,大体分为几类,各自的作用?

字节输入流 InputStream(读字节数据的)

字节输出流 OutoutStream(写字节数据出去的)

字符输入流 Reader(读字符数据的)

字符输出流 Writer(写字符数据出去的)

        2. IO流-字节流

        文件字节输入流:每次读取一个字节

 

        2.1 FileInputStream(文件字节输入流)

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

构造器

说明

public FileInputStream​(File file)

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

public FileInputStream​(String pathname)

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

方法名称

说明

public int read()

每次读取一个字节返回,如果发现没有数据可读会返回-1.

public int read(byte[] buffer)

每次用一个字节数组去读取数据,返回字节数组读取了多少个字节,如果发现没有数据可读会返回-1.

注意: 使用FileInputStream每次读取一个字节,读取性能差,并且读取汉字输出会乱码 

/*
文件字节输入流
    作用:
        读取文件中的内容到程序中,结果是字节
    语法:
        FileInputStream(File file)	        创建字节输入流管道与源文件接通
        FileInputStream(String pathname)	创建字节输入流管道与源文件接通
    方法(1次读1个字节)
        int read()	每次读取一个字节返回, 如果发现没有数据可读会返回-1
*/
public class Demo1 {
    public static void main(String[] args) throws IOException {
        //1. 创建文件字节输入流(c_demo1.txt)
//        File file = new File("day08-code/c_demo1.txt");
//        FileInputStream fis = new FileInputStream(file);
        FileInputStream file = new FileInputStream("day08-code/c_demo1.txt");

        //2. 读取文件中的内容
        //2.1 定义一个文件读取的变量
        int read;
        //2.2 while中 读取一次,赋值到变量,判断是否 != -1
        while ((read = file.read()) != -1) {
            System.out.println(read);
        }

        //3. 如果流操作完毕, 应该主动关闭流
        file.close();
    }
}

        1、文件字节输入流的作用是什么?

                从磁盘中读取内容到程序中

        2、每次读取一个字节的方法是哪个?

                public int read()

        3、每次读取一个字节存在什么问题?

                读取性能较差,并且读取汉字输出会乱码。

        2.2 FileInputStream(文件字节输入流)

  • 作用:以内存为基准,把文件中的数据以字节的形式读入到内存中来。 

    方法名称

    说明

    public int read()

    每次读取一个字节返回,如果发现没有数据可读会返回-1.

    public int read(byte[] buffer)

    每次用一个字节数组去读取数据,返回字节数组读取了多少个字节,如果发现没有数据可读会返回-1.

注意: 使用FileInputStream每次读取多个字节,读取性能得到了提升,但读取汉字输出还是会乱码。

/*
文件字节输入流(1次读多个字节)
    int read(byte[] buffer)	每次用一个字节数组去读取数据, 返回字节数组读取了多少个字节,如果发现没有数据可读会返回-1.
*/
public class Demo2 {
    public static void main(String[] args) throws IOException {
        //1. 创建文件字节输入流(c_demo2.txt)
        FileInputStream file = new FileInputStream("day08-code/c_demo2.txt");
        //2. 读取文件中的内容
        byte[] bytes = new byte[3];
        //使用while循环遍历
        //定义一个读取的长度,默认为空
        int len;
        //在while中,读取一次赋值到长度变量,判断是不是-1
        while ((len = file.read(bytes)) != -1) {
            String str = new String(bytes, 0, len);
            System.out.println("读取了" + len + "个字节,内容是:" + str);
        }
        //3. 如果流操作完毕, 应该主动关闭流
        file.close();
    }
}

        1、文件字节输入流,每次读取一个字节数组的方法是哪个?

方法名称

说明

public int read(byte[] buffer)

每次用一个字节数组去读取数据,返回字节数组读取了多少个字节,如果发现没有数据可读会返回-1.

        2、每次读取一个字节数组有什么好处? 存在什么问题?

                读取的性能得到了提升

                读取中文字符输出无法避免乱码问题

        2.3 文件字节输入流:一次读取完全部字节 

         方式一:自己定义一个字节数组与被读取的文件大小一样大,然后使用该字节数组,一次读完文件的全部字节。

方法名称

说明

public int read(byte[] buffer)

每次用一个字节数组去读取,返回字节数组读取了多少个字节,如果发现没有数据可读会返回-1.

         方式二:Java官方为InputStream提供了如下方法,可以直接把文件的全部字节读取到一个字节数组中返回。

方法名称

说明

public byte[] readAllBytes()

直接将当前字节输入流对应的文件对象的字节数据装到一个字节数组返回

/*
文件字节输入流(1次读所有字节)

    方式1:自己定义一个字节数组与被读取的文件大小一样大,然后使用该字节数组,一次读完文件的全部字节。
        public int read(byte[] buffer)	每次用一个字节数组去读取,返回字节数组读取了多少个字节,如果发现没有数据可读会返回-1.

    方式2: Java官方为InputStream提供了如下方法,可以直接把文件的全部字节读取到一个字节数组中返回。
        public byte[] readAllBytes()   直接将当前字节输入流对应的文件对象的字节数据装到一个字节数组返回

*/
public class Demo3 {
    public static void main(String[] args) throws IOException {
        //1. 创建文件字节输入流(c_demo3.txt)
        File file = new File("day08-code/c_demo3.txt");
        FileInputStream fis = new FileInputStream(file);

        //2. 读取文件中的内容
        //方式1: 定义一个跟文件同样大小的数组,一次接收所有
//        byte[] bytes = new byte[(int) file.length()];
//        int len = fis.read(bytes);
//        System.out.println(new String(bytes,0 ,len));//abcdefgh我都快学吐了,但是想想心愿墙上立下的目标,我决定:抽根烟,继续搞!!!
        //方式2: 直接使用readAllBytes将文件中所有内容读取到数组
        byte[] bytes = fis.readAllBytes();
        System.out.println(new String(bytes));//abcdefgh我都快学吐了,但是想想心愿墙上立下的目标,我决定:抽根烟,继续搞!!!
        //3. 如果流操作完毕, 应该主动关闭流
        fis.close();
    }
}

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

                一次性读取完全部字节

                可以定义与文件一样大的字节数组读取,也可以使用官方API

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

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

文件字节输出流:写字节出去

         2.4 FileOutputStream(文件字节输出流)

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

构造器

说明

public FileOutputStream​(File file)

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

public FileOutputStream​(String filepath)

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

public FileOutputStream​(File fileboolean append)

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

public FileOutputStream​(String filepathboolean append)

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

/*
文件字节输出流
    作用:
        向文件中写入字节内容
    语法:
        FileOutputStream(String filepath)	创建字节输出流管道与源文件路径接通
        FileOutputStream(String filepath, boolean append)	创建字节输出流管道与源文件路径接通,可追加数据
    方法
        void write(int a)	写一个字节出去
        void write(byte[] buffer)	写一个字节数组出去
        void write(byte[] buffer, int pos, int len)  写一个字节数组的一部分出去
        void close()  关闭流
    注意:
        如果要写出换行, 需要写"\r\n"的字节数组表示形式
*/
public class Demo4 {
    public static void main(String[] args) throws IOException {
        //创建文件字节输出流(c_demo4.txt)
        FileOutputStream file = new FileOutputStream("day08-code/c_demo4.txt");
        file.write(98);
        file.write("\r\n".getBytes());
        String str = "我A你";
        file.write(str.getBytes());
        file.write("\r\n".getBytes());

        byte[] bytes = {99, 98, 97, 100, 102};
        file.write(bytes);

        //关闭流
        file.close();
    }
}

        1、如何创建文件字节输出流,如何实现写数据的追加操作?

                public FileOutputStream​(String filepathboolean append)

        2、字节输出流写数据的方法有哪些?

public void write(int a)

public void write(byte[] buffer)

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

        3、字节输出流如何实现写出去的数据可以换行?

                写"\r\n"的字节数组表示形式

 案例:

/*
文件复制
    源文件-->输入流-->程序-->输出流-->目标文件

步骤:
    1. 创建文件的输入流,对应到源文件; 创建文件输出流,对应到目标文件
    2. 使用输入流读取数据,使用输出流写出数据(边读边写)
    3. 释放资源(关闭流)
*/
public class Demo5 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("D:\\ITheima\\zm.png");
        FileOutputStream fos = new FileOutputStream("E:\\PersonalData\\University\\picture.png");
        byte[] bytes = new byte[1024];
        int len;
        while ((len = fis.read(bytes)) != -1) {
            fos.write(bytes,0,len);
        }
        fos.close();
        fis.close();
    }
}

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

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

相关文章

vscode中使用go环境配置细节

1、在docker容器中下载了go的sdk 2、在/etc/profile.d/go.sh里填入如下内容: #!/bin/bashexport GOROOT=/home/ud_dev/go export PATH=$GOROOT/bin:$PATH 3、设置go env go env -w GOPROXY=https://goproxy.cn,direct go env -w GO111MODULE=on 4、重启这个容器,使得vscod…

DBAPI如何使用内存缓存

背景 在使用DBAPI创建API的时候,有时候SQL查询比较耗时,如果业务上对数据时效性要求不高,这种耗时的SQL可以使用缓存插件来将数据缓存起来,避免重复查询。 一般来说,可以使用redis memcache等缓存服务来存储缓存数据。…

活动|华院计算宣晓华受邀出席“AI引领新工业革命”大会,探讨全球科技的最新趋势

8月31日,“AI引领新工业革命”大会于上海图书馆圆满落幕。本次大会由TAA校联会和台协科创工委会联合主办,得到上海市台办、上海市台联、康师傅的大力支持。大会邀请了NVIDIA全球副总裁、亚太区企业营销负责人刘念宁,元禾厚望资本创始合伙人潘…

ispunct函数讲解 <ctype.h>头文件函数

目录 1.头文件函数 2.ispunct函数使用 小心&#xff01;VS2022不可直接接触&#xff0c;否则..!没有这个必要&#xff0c;方源一把抓住VS2022&#xff0c;顷刻 炼化&#xff01; 1.头文件函数 以上函数都需要包括头文件<ctype.h> &#xff0c;其中包括 ispunct 函数 #…

esp8266+sg90实现远程开关灯(接线问题)

1需要准备的设备 首先需要的设备 硬件&#xff1a;esp8266开发板和sg90舵机&#xff0c;还有公对母的杜邦线&#xff0c;以及一根usb程序下载线。 软件&#xff1a;Arduino IDE 因为sg90舵机接口是三个连着的&#xff0c;只能用公对母的杜邦线把三条信号线接到esp8266的不同引…

Linux驱动.之字符设备驱动框架,新内核框架,设备树(二)

第一篇比较长&#xff0c;第二篇&#xff0c;继续写&#xff0c;内容有重复 一、字符设备驱动框架 在用户空间中调用open&#xff0c;打开一个字符设备&#xff0c;执行流程如下&#xff1a;最终会执行chrdev中的ops对应的open函数。

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法&#xff08;KNN&#xff09;8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特…

面试官:你是怎么处理vue项目中的错误的?

一、错误类型 任何一个框架&#xff0c;对于错误的处理都是一种必备的能力 在Vue 中&#xff0c;则是定义了一套对应的错误处理规则给到使用者&#xff0c;且在源代码级别&#xff0c;对部分必要的过程做了一定的错误处理。 主要的错误来源包括&#xff1a; 后端接口错误代…

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理&#xff08;三次握手、四次挥手&#xff09; 三次握手&#xff08;建立TCP连接&#xff09; 四次挥手&#xff08;断开连接&#xff09; 4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答…

(入门篇)JavaScript 网页设计案例浅析-简单的交互式图片轮播

网页设计已经成为了每个前端开发者的必备技能,而 JavaScript 作为前端三大基础之一,更是为网页赋予了互动性和动态效果。本篇文章将通过一个简单的 JavaScript 案例,带你了解网页设计中的一些常见技巧和技术原理。今天就说一说一个常见的图片轮播效果。相信大家在各类电商网…

使用vscode上传git远程仓库流程(Gitee)

目录 参考附件 git远程仓库上传流程 1&#xff0c;先将文件夹用VScode打开 2&#xff0c;第一次进入要初始化一下仓库 3&#xff0c;通过这个&#xff08;.gitignore&#xff09;可以把一些不重要的文件不显示 注&#xff1a;&#xff08;.gitignore中&#xff09;可屏蔽…

AI辅助编程里的 Atom Group 的概念和使用

背景 在我们实际的开发当中&#xff0c;一个需求往往会涉及到多个文件修改&#xff0c;而需求也往往有相似性。 举个例子&#xff0c;我经常需要在 auto-coder中需要添加命令行参数&#xff0c;通常是这样的&#xff1a; /coding 添加一个新的命令行参数 --chat_model 默认值为…

基于RAG和知识库的智能问答系统设计与实现

开局一张图&#xff0c;其余全靠编。 自己画的图&#xff0c;内容是由Claude根据图优化帮忙写的。 1. 引言 在当今数字化时代&#xff0c;智能问答系统已成为提升用户体验和提高信息获取效率的重要工具。随着自然语言处理技术的不断进步&#xff0c;特别是大型语言模型&#x…

Sonarqube 和 Sonar-scanner的安装和配置

SonarQube 简介 所谓sonarqube 就是代码质量扫描工具。 官网&#xff1a; https://www.sonarsource.com/sonarqube/ 在个人开发学习中用处不大&#xff0c; 我草&#xff0c; 我的代码质量这么高需要这玩意&#xff1f; 但是在公司项目中&#xff0c; 这个可是必须的&#x…

【高校主办,EI稳定检索】2024年人机交互与虚拟现实国际会议(HCIVR 2024)

会议简介 2024年人机交互与虚拟现实国际会议&#xff08;HCIVR 2024&#xff09;定于2024年11月15-17日在中国杭州召开&#xff0c;会议由浙江工业大学主办。人机交互&#xff0c;虚拟现实技术的发展趋势主要体现在系统将越来越实际化&#xff0c;也越来越贴近人类的感知和需求…

心觉:第一性原理思考和共情能力,怎么用效果更好

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作163/1000天 我很佩服逻辑能力很强的人 也很佩服共情能力很强的人 他们都很厉害 我自己感觉逻辑能力更强一点&#xff0c;平时喜欢…

strlen函数模拟实现(嵌套函数调用)

目录 1.模拟实现strlen函数代码&#xff08;嵌套函数&#xff09; 2.代码解释 小心&#xff01;VS2022不可直接接触&#xff0c;否则..!没有这个必要&#xff0c;方源一把抓住VS2022&#xff0c;顷刻 炼化&#xff01; 1.模拟实现strlen函数代码&#xff08;嵌套函数&#x…

从零开始写论文:如何借助ChatGPT生成完美摘要?

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 在写论文的过程中&#xff0c;摘要是一个非常重要的部分&#xff0c;它能够帮助读者快速理解论文的核心内容&#xff0c;决定是否进一步阅读全文。但是许多学生在写摘要的时候常常感到困惑&#xff0c;不知…

Oracle 19c数据库:Windows详细安装与配置指南

Oracle 19c的安装和配置是一个相对复杂但系统化的过程&#xff0c;本文演示如何在 Windows 系统下安装 Oracle数据库&#xff0c;安装足够的磁盘空间&#xff08;一般需要5~6个G&#xff0c;所以选剩余空间大的盘&#xff09;。以下是一个详细的步骤指南&#xff0c;包括准备工…

多线程 | CompletableFutureAPI简单介绍

文章目录 1. 案例Future方案CompletableFuture方案 2. CompletableFuture方法一览使用new方法supplyAsync方法runAsync方法为什么仍需要CompletableFuture其他API介绍whenCompletethenApplythenAcceptthenComposethenCombineallOf&anyOfsupplyAsync 3. 注意点4. 总结 本文从…