【JAVAEE】Java中的文件基础

news2025/1/12 3:58:52

目录

1.文件

1.1什么是文件

1.2文件路径

2.Java中操作文件

File类中常见的属性

File类中常见的构造方法

File类中常见的方法

3.文件内容的读写---数据流

按字节进行数据读InputStream

FileInputStream

按字节进行数据写OutputStream

按字符进行数据读FileReader

按字符进行数据写FileWriter

Scanner简化读操作

PrintWriter简化写操作

Java中的文件代码示例1

Java中的文件代码示例1


1.文件

1.1什么是文件

狭义上的文件:硬盘上保存的数据,都是“文件”来组织的,本质上都是二进制或是字符组织的数组,被打包成一个文件存在硬盘上。常见的文件有图片(png),文本(txt),可执行文件(exe)等。

广义上的文件:操作系统的主要功能就是对计算机资源进行统一管理与分配。对于Linux来说,所有的计算设备都会被描述(抽象)成文件。(例如:网卡,键盘,打印机等)

树形结构组织:随着文件越来越多,如何进行文件的组织呢?就是按照层级结构进行组织---也就是数据结构中的树形结构。而我们平时所谓的文件夹或者目录,就是专门用来存放管理信息的。

在cmd中查看指定(当前)目录的树形结构语法:

目录>tree /F

查看树形结构示例:

1.2文件路径

绝对路径:从根目录开始一直到目标程序的表示方式

相对路径:从当前目录开始,表示目标程序路径的方式

从当前目录开始找到目标程序(一个点)

语法:.+目标程序目录

返回到上一级目录,再找目标程序(两个点)

语法:..+目标程序目录

举例:这是QQ.exe的完整目录

 当前目录在

要找QQ.exe操作:

若当前目录在:

 要找QQ.exe操作:

补充:

对于cmd来说,起始工作目录就是当前的用户目录

对于idea来说,起始工作目录就是工程的根目录

2.Java中操作文件

操作系统的一个重要功能就是对文件的管理,每个操作系统都有自己的一套系统API调用,Java作为一个跨平台的语言,JVM针对不同的操作系统做了一层封装,我们只需要使用JDK提高的关于文化操作的API就可以完成不同系统上的文件操作。

Java中通过java.io.File类来对一个文件进行抽象的描述。

输入输出是以内存为参照物的,输入指的是从外部输入到内存,输出指的是把内存中的数据输出到外部(磁盘,显卡等)。

注意:有File对象,并不代表真实存在该文件。

File类中常见的属性

修饰符及类型
属性说明
static String
pathSeparator依赖于系统的路径分隔符,String类型的表示
static char
pathSeparator依赖于系统的路径分隔符,char类型的表示

File类中常见的构造方法

签名
说明
File(File parent, String child)
根据父目录 + 孩子文件路径,创建一个新的 File 实例
File(String pathname)
根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径
File(String parent,String child)
根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示

示例代码:

        //通过指定文件路径来创建一个File对象
        File file=new File("D:/temp/hello.txt");
        System.out.println(file);

File类中常见的方法

常见方法1:

修饰符及返回值类型
方法签名
说明
String
getParent()
返回 File 对象的父目录文件路径
String
getName()
返回 FIle 对象的纯文件名称
String
getPath()
返回 File 对象的文件路径
String
getAbsolutePath()
返回 File 对象的绝对路径
String
getCanonicalPath()
返回 File 对象的修饰过的绝对路径
boolean
exists()
判断 File 对象描述的文件是否真实存在
boolean
isDirectory()
判断 File 对象代表的文件是否是一个目录
boolean
isFile()
判断 File 对象代表的文件是否是一个普通文件

示例代码(绝对路径):

        //指定绝对路径并创建一个file对象
        File file=new File("D:/test/hello.txt");
        //获取父目录
        System.out.println(file.getParent());
        //获取文件名
        System.out.println(file.getName());
        //获取路径
        System.out.println(file.getPath());
        //获取绝对路径
        System.out.println(file.getAbsolutePath());
        //获取标准路径
        System.out.println(file.getCanonicalPath());
        //是否存在
        System.out.println(file.exists());
        //是否是一个目录
        System.out.println(file.isDirectory());
        //是否是一个文件
        System.out.println(file.isFile());

运行结果:

代码示例(相对路径):

        //指定相对 路径并创建一个file对象
        File file=new File("./hello.txt");
        //获取父目录
        System.out.println(file.getParent());
        //获取文件名
        System.out.println(file.getName());
        //获取路径
        System.out.println(file.getPath());
        //获取绝对路径
        System.out.println(file.getAbsolutePath());
        //获取标准路径
        System.out.println(file.getCanonicalPath());
        //是否存在
        System.out.println(file.exists());
        //是否是一个目录
        System.out.println(file.isDirectory());
        //是否是一个文件
        System.out.println(file.isFile());

运行结果:

 常见方法2:

修饰符及返回值类型
方法签名
说明
boolean
createNewFile()
根据 File 对象,自动创建一个空文件。成功创建后返 true
boolean
delete()
根据file对象,删除该文件,成功删除后返回true
void
deleteOnExit()
根据 File 对象,标注文件将被删除,删除动作会到JVM 运行结束时才会进行
String[]
list()
返回file对象代表的目录下的所有文件名
File[]
listFiles()
返回file对象代表的目录下的所有文件,以file对象表示
boolean
mkdir()
创建file对象代表的目录
boolean
mkdirs()
创建file对象代表的目录,如果必要,会创建中间目录
boolean
renameTo(File dest)
进行文件改名,也可以视为我们平时的剪切、粘贴操作
boolean
canRead()
判断用户是否对文件有可读权限
boolean
canWrite()
判断用户是否对文件有可写权限

示例代码1:

    public static void main(String[] args) throws IOException {
        //通过绝对路径创建file对象
        File file=new File("D:/test/hi.txt");

        //创建文件
        boolean result=file.createNewFile();
        if(result){
            System.out.println("创建成功");
        }else{
            System.out.println("创建失败");
        }
    }

运行结果:

 示例代码2:

        //通过绝对路径创建file对象
        File file=new File("D:/test/hi.txt");

        //删除文件
        boolean result=file.delete();
        if(result){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }

 运行结果:

 示例代码3:

    public static void main(String[] args) {
        //指定一个目录的路径
        File file=new File("D:/test");

        //获取目录下的文件和子目录
        String[]list=file.list();
        System.out.println(Arrays.toString(list));

        //获取目录下的文件对象数组
        File[]files=file.listFiles();
        System.out.println(Arrays.toString(files));
    }

 运行结果:

示例代码4:

    public static void main(String[] args) {
        //指定要创建的目录
        File file=new File("D:/test/testSingle");

        //创建单个目录
        boolean result=file.mkdir();
        if(result){
            System.out.println("创建成功");
        }else{
            System.out.println("创建失败");
        }
    }

运行结果:

 示例代码5:

        //指定要创建的目录
        File file=new File("D:/test/a/b/c");

        //创建单个目录
        boolean result=file.mkdirs();
        if(result){
            System.out.println("创建成功");
        }else{
            System.out.println("创建失败");
        }

 

 示例代码6:

        //定义源文件
        File sourceFile=new File("D:/test/hello.txt");
        //定义目标文件
        File destFile=new File("D:/test/hi.txt");
        //重命名
        boolean result=sourceFile.renameTo(destFile);
        if(result){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }

 示例代码7:

        //通过指定文件路径来创建一个File对象
        File file=new File("D:/temp/hi.txt");
        //是否可写
        System.out.println(file.canWrite());
        //是否可读
        System.out.println(file.canRead());

 

3.文件内容的读写---数据流

数据流分为输入流输出流两类。

 

按字节进行数据读InputStream

InputStream只是一个抽象类,要使用还需要具体的实现类。从文件中读取,使用FileInputStream.

方法:

修饰符及返回值类
方法签名
说明
int
read()
读取一个字节的数据,返回 -1 代表已经完全读完了
int
read(byte[]b)
最多读取 b.length 字节的数据到 b 中,返回实际读到的数量; -1 代表以及读完了
int
read(byte[]b, int off, int len)
最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返回实际读到的数量; -1 代表以及读完了
void
close()
关闭字节流
注意:
打开一个文件,相当于把文件放入文件描述符表中。

用完一定要关闭,如果不关闭,那么文件描述符表(本质上是一个数组),就会被填满,导致以后可能就无法再打开文件。

示例代码1:
 
        //创建一个文件对象
        File file=new File("D:/test/hi.txt");
        //创建一个输入流
        InputStream inputStream=new FileInputStream(file);
        //读取文件内容
        while(true){
            int read=inputStream.read();
            //是否读完
            if(read==-1){
                break;
            }
            System.out.println(read);
        }
        //关闭
        inputStream.close();

 示例代码2:

        //创建一个文件对象
        File file=new File("D:/test/hi.txt");
        //创建一个输入流
        InputStream inputStream=new FileInputStream(file);
        //定义一个数组用来保存读到的数据
        byte[]bytes=new byte[1024];
        //读取文件内容
        while(true){
            //读到的数据会被填充到Bytes数据中,返回读取数据的长度
            int len=inputStream.read(bytes);
            //判断是否读完
            if(len==-1){
                break;
            }
            //打印读到的内容
            for (int i = 0; i < len; i++) {
                System.out.println(bytes[i]);
            }
        }
        //关闭
        inputStream.close();

运行结果:

 

FileInputStream

构造方法:

签名
说明
FileInputStream(File file)
利用 File 构造文件输入流
FileInputStream(String name)
利用文件路径构造文件输入流

按字节进行数据写OutputStream

OutputStream同样只是一个抽象类,要使用还需要具体的实现类。

方法
 

修饰符及 返回 值类
方法签名
说明
void
write(int b)
写入要给字节的数据
void
write(byte[] b)
b 这个字符数组中的数据全部写入 os
int
write(byte[]b, int off, int len)
b 这个字符数组中从 off 开始的数据写入 os 中,一共写 len
void
close()
关闭字节流
void
flush()
重要:我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的
一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的
数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,调用 flush (刷新)操作,将数据刷到设备中。

注意:我们写的文件内容一般是先写到缓冲区里,缓冲区里的内容什么时候写入是由操作系统决定的。

示例代码:

    public static void main(String[] args) throws IOException {
        //先创建一个file对象
        File file=new File("D:/test/hi.txt");
        //创建一个输出流
        FileOutputStream outputStream=new FileOutputStream(file);
        //向文件中写入内容
        outputStream.write(100);
        outputStream.write(101);
        outputStream.write(102);
        //刷新缓冲区
        outputStream.flush();
        //关闭流
        outputStream.close();
    }

运行结果:

运行前:运行后:

 新写入的内容会覆盖掉原内容。

按字符进行数据读FileReader

        //先创建一个file对象
        File file=new File("D:/test/hi.txt");
        //根据file对象创建一个reader(面向字符的输入流)
        FileReader reader=new FileReader(file);
        //循环读取
        while(true){
            int read=reader.read();
            if(read==-1){
                break;
            }
            //打印
            System.out.println(read);
        }
        reader.close();

运行结果:

文件中是字母abc,输出的是它的ASCII值。

按字符进行数据写FileWriter

    public static void main(String[] args) throws IOException {
        //先创建一个file对象
        File file=new File("D:/test/hi.txt");
        //根据file对象创建一个字符输出流
        FileWriter writer=new FileWriter(file);
        //写入数据
        writer.write("你好");
        writer.write("hi");
        //刷新缓冲区
        writer.flush();
        //关闭流
        writer.close();
    }

 运行结果:

 可以传入字符串,但是没有换行,如果要换行,必须手动加入换行符。

Scanner简化读操作

        //创建一个输入流
        FileInputStream inputStream=new FileInputStream("D:/test/hi.txt");
        //根据创建输入流创建scanner对象
        Scanner scanner=new Scanner(inputStream,"UTF-8");
        //循环读取
        while(scanner.hasNext()){
            String next=scanner.next();
            System.out.println(next);
        }
        inputStream.close();

scanner.next()是每次读取一个词。

scanner.nextLine()是每次读取一行。这里采用scanner,next()。

运行结果:

PrintWriter简化写操作

        //创建一个输出流
        FileOutputStream outputStream=new FileOutputStream("D:/test/hi.txt");
        //根据创建输出流创建PrintWriter对象
        PrintWriter writer=new PrintWriter(outputStream);
        //写入文件
        writer.println("哈喽");
        writer.println("world");
        writer.println("我是PrintWriter写入的内容");
        //刷新缓冲区
        writer.flush();
        //关闭
        writer.close();

这里的println和平常的输出方法一样。

Java中的文件代码示例1

题目:扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后序询问用户是否要删除文件。

思路:本题是在一个目录中找到指定字符所在文件,并选择要不要删除。

1.用户输入一个路径

2.检查路径是否有效

3.用户输入目标字符

4.获取路径下的文件和目录

5.如果是目录的话,再递归查找文件

6.如果是文件检查文件名是否包含用户输入的字符

代码:

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Exe01 {
    public static void main(String[] args) throws IOException {
        //1.接收用户输入的扫描路径
        System.out.println("请输入要扫描的路径(绝对路径):");
        Scanner sc=new Scanner(System.in);
        String rootPath=sc.next();
        //2.判断路径是否有效
        File root=new File(rootPath);
        //路径是否存在
        if (!root.exists()) {
            System.out.println("路径不存在");
            return;
        }
        //判断路径是不是一个目录
        if (!root.isDirectory()) {
            System.out.println("指定路径不是一个有效目录");
            return;
        }
        //3.接收关键字
        System.out.println("请输入关键字");
        String key=sc.next();
        if(key==null || "".equals(key)){
            System.out.println("关键字不能为空");
            return;
        }
        //4.扫描目录下的所有文件
        scan(root,key);
    }

    private static void scan(File root, String key) throws IOException {
        //1.先获取目录下的所有文件
        File[]files=root.listFiles();
        //递归的终止条件
        if(files==null || files.length==0){
            return;
        }
        //遍历数组中每个文件
        for (int i = 0; i < files.length; i++) {
            //取出每一个文件
            File tempFile=files[i];
            //判断是文件还是目录
            if(tempFile.isFile()){
                //如果是文件,判断文件名中是否包含关键字
                String fileName=tempFile.getName();
                //如果在文件中找到关键字
                if(fileName.contains(key)){
                    System.out.println("找到文件"+tempFile.getCanonicalPath()+",是否删除(Y/N)");
                    //接收用户的输入,根据输入判断是否删除
                    Scanner sc=new Scanner(System.in);
                    String order=sc.next();
                    //删除操作
                    if(order.equalsIgnoreCase("y")){
                        tempFile.delete();
                        System.out.println(tempFile.getCanonicalPath()+"删除成功");
                    }
                }
            }else{
                //如果是目录,则递归
                scan(tempFile,key);
            }
        }
    }
}

Java中的文件代码示例1

题目:进行普通文件的复制。

思路:

1.用户输入源文件的路径

2.检查源文件是否存在,并且是一个文件

3.用户输入目标文件的路径

4.检查目标文件是否存在,并校验目录或文件

5.完成复制

代码:

import java.io.*;
import java.util.Scanner;

public class Exe02 {
    public static void main(String[] args) {
        //1.接收用户输入的源文件路径
        System.out.println("请输入源文件路径:");
        Scanner sc=new Scanner(System.in);
        String sourcePath=sc.next();
        //2.判断源文件是否有效
        File sourceFile=new File(sourcePath);
        //文件是否存在
        if (!sourceFile.exists()) {
            System.out.println("源文件不存在");
            return;
        }
        //判断是不是一个文件
        if (!sourceFile.isFile()) {
            System.out.println("源文件不是一个有效的文件");
            return;
        }
        //3.接收用户输入的目标文件路径
        System.out.println("请输入目标文件路径(绝对路径):");
        String destPath=sc.next();
        File destFile=new File(destPath);
        //判断目标文件是否存在
        if (destFile.exists()) {
            System.out.println("目标文件已存在");
            return;
        }
        //判断目标文件的父目录是否存在
        if (!destFile.getParentFile().exists()) {
            System.out.println("目标文件的父目录不存在");
            return;
        }
        //循环读取源文件的内容并写到目标文件中
        try(FileInputStream inputStream=new FileInputStream(sourceFile);
            FileOutputStream outputStream=new FileOutputStream(destFile)) {
            //定义一个byte数组用来做为输出型参数,保存每次读到的文件内容
            byte[]bytes=new byte[1024];
            //循环读取内容
            while(true){
                int len=inputStream.read(bytes);
                if(len==-1){
                    break;
                }
                //写入目标文件
                outputStream.write(bytes);
                //强制刷新缓冲区
                outputStream.flush();
            }
            System.out.println("复制成功");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

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

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

相关文章

【JavaSE】Java基础语法(一)

文章目录 1. ⛄常量2. ⛄数据类型2.1 &#x1f320;&#x1f320;计算机存储单元2.2 &#x1f320;&#x1f320;Java 中的数据类型 3. ⛄变量的注意事项4. ⛄键盘录入5. ⛄标识符 1. ⛄常量 常量&#xff1a;在程序运行过程中&#xff0c;其值不可以发生改变的量。 Java中的常…

2023年我要在深圳考CPDA数据分析师认证,含金量如何?

CPDA数据分析师认证是大数据方面的认证&#xff0c;助力数据分析人员打下扎实的数据分析基础知识功底&#xff0c;为入门数据分析保驾护航。 帮助数据分析人员掌握系统化的数据分析思维和方法论&#xff0c;提升工作效率和决策能力&#xff0c;遇到问题能够举一反三&#xff0c…

opencv图像灰度化

图像灰度化就是将图像的亮度值&#xff08;R,G,B&#xff09;按照一定的方式映射到0-255之间的灰度值上&#xff0c;为了使图像看起来不那么单调&#xff0c;需要将图像的亮度值进行变换。下面简单介绍下 opencv中的灰度化函数&#xff1a; 1、先将图像的像素值转换为R,G,B三个…

手机也可以搭建博客?安卓Termux+Hexo搭建属于你自己的博客网站 - 公网远程访问

文章目录 1. 安装 Hexo2. 安装cpolar内网穿透3. 公网远程访问4. 固定公网地址 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…

【Linux】信号集及相关函数(sigemptyset、sigfillset、sigprocmask)

目录 1、信号集2、自定义信号集相关函数3、sigprocmask函数函数解析代码举例 橙色 1、信号集 多个信号组成的一个集合称为信号集&#xff0c;其系统数据类型为 sigset_t 。 在 PCB 中有两个非常重要的信号集&#xff0c;一个称为“阻塞信号集”&#xff0c;另一个是“未决信号…

Charles 抓包工具下载安装及基础使用

在Charles抓包工具之前讲过了Fiddler抓包工具&#xff0c;在讲之前先来解决读者的该怎么读这两个单词&#xff08; Charles 读&#xff1a;雀奥斯 和 Fiddler 读&#xff1a;非的了 &#xff09;&#xff0c;下面进入正题&#xff0c;有使用过抓包工具的或者看过之前关于Fiddle…

leecode530—二叉搜索树的最小绝对差

leecode530 二叉搜索树的最小绝对差 &#x1f50e;首先要知道二叉搜索树是有序的&#xff0c;补充一下二叉搜索树的相关概念。 &#x1f7e0; 对于 BST 的每一个节点 node&#xff0c;左子树节点的值都比 node 的值要小&#xff0c;右子树节点的值都比 node 的值大。 &#x1f…

数据分析笔记:基本概念,常用图表,报告大纲

1.数据分析 1.1定义 对数据进行分析。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。在实际工作中&#xff0c;帮助管理者判断和决策。 1.2步骤 数据分析的基本步骤包括明确思路&#xff0c;制定计划、数据收集、数据处理、数据分析、数据显…

chatgpt赋能Python-python_kanren

Python Kanren&#xff1a;一种强大的逻辑编程工具 Python Kanren是一种基于Python的逻辑编程工具&#xff0c;它可以帮助开发人员轻松地构建复杂的逻辑应用程序。如果您正在寻找一种可以帮助您更快地开发和测试逻辑代码的工具&#xff0c;那么Python Kanren绝对是一个不错的选…

MySQL 用户管理

目录 用户管理 用户 用户信息 创建用户 删除用户 修改用户密码 数据库的权限 给用户 注意&#xff1a;如果发现赋权限后&#xff0c;没有生效&#xff0c;执行如下指令&#xff1a; 回收权限 用户管理 如果我们只能使用 root 用户&#xff0c;这样存在安全隐患。这时…

有没有高清录制视频软件?如何录制清晰的视频?

案例&#xff1a;录屏画质模糊影响观看怎么办&#xff1f; 【我把我在电脑上的操作录制了下来&#xff0c;录屏虽然可以看清楚操作的步骤&#xff0c;但是画质比较模糊&#xff0c;看起来很不舒服。有没有什么方法可以录制清晰画质的视频&#xff1f;】 当今数字化时代&#…

Ubutun安装Anconda3

一、下载Anconda 方法一&#xff1a;官网下载 https://www.anaconda.com/download&#xff08;比较费时&#xff09; 可以点击右键复制地址 使用Wget下载 wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh方法 2&#xff1a;清华源 在清华大…

Shell运维实战2-条件判断与函数

目录 Shell 条件测试与比较脚本条件测试文本测试表达式字符串测试表达式整数二元比较操作符逻辑操作符区别总结 if 语句Shell 函数基础执行 Shell 条件测试与比较 脚本条件测试 # -f判断文件是否存在&#xff0c;如果存在返回真&#xff0c;反之为假 # 一下结构类似于三元运算…

Hadoop基础学习---5、MapReduce概述和WordCount实操(本地运行和集群运行)、Hadoop序列化

1、MapReduce概述 1.1 MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Had…

如何在宝塔面板后的阿里云服务器运行Flask项目并公网可以访问?

在你的服务器安装宝塔面板 宝塔面板是服务器运维管理系统 使用宝塔前&#xff1a; 手工输入命令安装各类软件&#xff0c;操作起来费时费力并且容易出错&#xff0c;而且需要记住很多Linux的命令&#xff0c;非常复杂。 使用宝塔后&#xff1a; 2分钟装好面板&#xff0c;一键…

二维码在中国:学术视角下的创新与实践

相关统计数据显示&#xff0c;全球每天要扫100亿个二维码&#xff0c;而中国的二维码应用占到全球九成左右&#xff0c;平均每人每天扫码6次以上。 作为万物互联时代的“数字身份证”&#xff0c;二维码在物流运输、生产制造、会议签到、移动支付、餐饮服务、资产管理、市场营…

活动在线制作投票链接如果制作投票链接线上投票链接制作

近些年来&#xff0c;第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放&#xff0c;更多人选择微信投票小程序平台&#xff0c;因为它有非常大的优势。 1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

简单分享在微信上社区团购小程序制作步骤

打造属于自身的独立小程序拥有更高的自主性&#xff0c;特别是基于得店小程序的创新产品力&#xff0c;从设计上彰显品牌理念&#xff0c;到功能上进行扩展拓宽营销方式&#xff0c;都完全自我掌控&#xff0c; ● 更重要的是&#xff0c;相比于平台上各种复杂的机制&#xff0…

chatgpt赋能Python-python_headers

什么是Python Headers&#xff1f; Python Headers是Python程序的一部分&#xff0c;它负责导入Python模块和库。这些头文件包含有关Python模块和库的信息&#xff0c;它们允许程序员编写Python扩展并将它们与Python解释器连接&#xff0c;使其能够正确运行。 Python Headers…

Linkage Mapper Toolkit中的Pinchpoint Mapper功能解析(含实例分析)

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 白尾兔(Lepus townsendii)的Pinchpoint映射器输出和栖息地浓集区效果图: 图片来源地址 <