Java基础—File、InputStream、OutputStream、Reader、Writer

浅谈InputStream 网络传输方面总会碰到将某种格式的文本或者图片等转幻成数据流的方式来传输,那到底是什么原理呢 阅读详情

1. File类

构造函数:
File(File parent, String child) 根据父抽象路径名和子路径名字符串创建一个新的File实例。
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 根据父路径名字符串和子路径名字符串创建一个新的File实例。

File API:
boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
boolean createNewFile() 当且仅当具有该抽象路径名的文件不存在时,以原子方式创建一个新的空文件。
boolean mkdirs() 创建以此抽象路径名命名的目录,包括任何必需但不存在的父目录。
boolean delete() 删除此抽象路径名表示的文件或目录。
boolean renameTo(File dest) 重命名此抽象路径名表示的文件。

long length() 返回此抽象路径名表示的文件的长度。
boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。
boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。

String getPath() 将此抽象路径名转换为一个路径名字符串。比如 image\temp\test.txt,D:\image\temp\test.txt。
String getName() 返回由此抽象路径名表示的文件或目录的名称,比如 test.txt。	
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。比如 image\temp,D:\image\temp。

2. 基于字节的I/O操作

2.1 基于字节的I/O操作类的层次结构

InputStream(C)抽象类,表示字节输入流所有类的超类。
    |
    |-- FileInputStream(C)文件字节输入流。 
    |
	|-- ByteArrayInputStream(C)字节数组输入流,包含一个内部缓冲区,其中包含可以从流中读取的字节。
    |
    |-- ObjectInputStream(C)只有实现 java.io.Serializable 或 java.io.Externalizable 接口的对象才能从流读取。
 	|
    |-- FilterInputStream(C)容纳其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
    |			| 
    |			|-- BufferedInputStream(C)字节缓冲输入流。
    |
    |-- PipedInputStream(C)管道字节输入流。        


OutputStream(C)抽象类,表示字节输出流所有类的超类。
    |
    |-- FileOutputStream(C)文件字节输出流。
	|
    |-- ByteArrayOutputStream(C)字节数组输出流,将数据写入一个字节数组;缓冲区在数据写入时自动增长。
    |
    |-- ObjectOutputStream(C)只有实现 java.io.Serializable 接口的对象才能写入流中。
    |
    |-- FilterOutputStream(C)容纳其他一些输出流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
    |			|
    |			|--BufferedOutputStream(C)字节缓冲的输出流。
    |
    |-- PipedOutputStream(C)管道字节输出流。

2.2 InputStream、OutputStream

InputStream(C)抽象类,字节输入流所有类的超类。
API:
abstract int read() 从输入流中读取数据的下一个字节。
int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。
void close() 关闭此输入流并释放与该流关联的所有系统资源。


OutputStream(C)抽象类,字节输出流所有类的超类。
API:
abstract void write(int b) 将指定的字节写入此输出流。
void write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
void flush() 刷新此输出流并强制写出所有缓冲的输出字节。
void close() 关闭此输出流并释放与此流有关的所有系统资源。

2.3 FileInputStream、FileOutputStream

FileInputStream(C)文件字节输入流。  
构造函数:
FileInputStream(File file) 
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String name) 
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

API:
继承 InputStream 抽象类方法。


FileOutputStream(C)文件字节输出流。 
构造函数:
FileOutputStream(File file) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(File file, boolean append) 
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。append 如果为 true,则将字节从文件末尾处开始写入,如果为 false 则将字节从文件开始处写入。
FileOutputStream(String name) 创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(String name, boolean append) 
创建一个向具有指定 name 的文件中写入数据的输出文件流。append 如果为 true,则将字节从文件末尾处开始写入,如果为 false 则将字节从文件开始处写入。

API:
继承 OutputStream 抽象类方法。

2.4 ByteArrayInputStream、ByteArrayOutputStream

ByteArrayInputStream(C)字节数组输入流,包含一个内部缓冲区,其中包含可以从流中读取的字节。
构造函数:
ByteArrayInputStream(byte[] buf) 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
ByteArrayInputStream(byte[] buf, int offset, int length) 创建 ByteArrayInputStream,使用 buf 作为其缓冲区数组。

API:
继承 InputStream 抽象类方法。
void close() 关闭 ByteArrayInputStream 无效。关闭此流后仍可被调用,而不会产生任何IOException。


ByteArrayOutputStream(C)字节数组输出流,将数据写入一个字节数组;缓冲区在数据写入时自动增长。
构造函数:
ByteArrayOutputStream() 创建一个新的 byte 数组输出流。
ByteArrayOutputStream(int size) 创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。

API:
继承 OutputStream 抽象类方法。 
byte[] toByteArray() 创建一个新分配的 byte 数组。
int size() 返回缓冲区的当前大小。 
String toString() 使用平台默认的字符集,通过解码字节将缓冲区内容转换为字符串。
String toString(String charsetName) 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串。 
void close() 关闭 ByteArrayOutputStream 无效。在关闭此流后仍可被调用,而不会产生任何 IOException。

2.5 ObjectInputStream、ObjectOutputStream

ObjectInputStream(C)只有实现 java.io.Serializable 或 java.io.Externalizable 接口的对象才能从流读取。
构造函数:
ObjectInputStream(InputStream in) 创建从指定 InputStream 读取的 ObjectInputStream。

API:
继承 InputStream 抽象类方法。
Object readObject() 从 ObjectInputStream 读取对象。


ObjectOutputStream(C)只有实现 java.io.Serializable 接口的对象才能写入流中。
构造函数:
ObjectOutputStream(OutputStream out) 创建写入指定 OutputStream 的 ObjectOutputStream。

API:
继承 OutputStream 抽象类方法。    
void writeObject(Object obj) 将指定的对象写入 ObjectOutputStream。

2.6 BufferedInputStream、BufferedOutputStream

BufferedInputStream(C)字节缓冲输入流。
构造函数:
BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。默认缓冲区为8192字节。
BufferedInputStream(InputStream in, int size) 
创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

API:
继承 InputStream 抽象类方法。


BufferedOutputStream(C)字节缓冲的输出流。
构造函数:
BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。默认缓冲区为8192字节。
BufferedOutputStream(OutputStream out, int size) 
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。

API:
继承 OutputStream 抽象类方法。  

2.7 PipedInputStream、PipedOutputStream

PipedInputStream(C)管道字节输入流。
构造函数:
PipedInputStream() 创建尚未连接的 PipedInputStream。
PipedInputStream(int pipeSize) 创建一个尚未连接的 PipedInputStream,并对管道缓冲区使用指定的管道大小。
PipedInputStream(PipedOutputStream src) 创建 PipedInputStream,使其连接到管道输出流 src。
PipedInputStream(PipedOutputStream src, int pipeSize) 
创建一个 PipedInputStream,使其连接到管道输出流 src,并对管道缓冲区使用指定的管道大小。

API:
继承 InputStream 抽象类方法。


PipedOutputStream(C)管道字节输出流。
构造函数:
PipedOutputStream() 创建尚未连接到管道输入流的管道输出流。
BufferedOutputStream(OutputStream out, int size) 
PipedOutputStream(PipedInputStream snk) 创建连接到指定管道输入流的管道输出流。

API:
继承 OutputStream 抽象类方法。

2.8 示例

1、从文件读写对象:
FileInputStream fis = new FileInputStream("t.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
BufferedInputStream bis = new BufferedInputStream(ois);

FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
BufferedOutputStream bos = new BufferedOutputStream(oos);

2、从内存读写对象:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(object);
oos.flush();
byte[] bytes = baos.toByteArray();
oos.close();

ByteArrayInputStream bais = ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
Object object = ois.readObject()

3、读文件到内存
try (FileInputStream fis = new FileInputStream("t.tmp");
     BufferedInputStream bis = new BufferedInputStream(fis);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();) {

     byte[] temp = new byte[8192];
     int length;
     while ((length = bis.read(temp)) != -1) {
	 	baos.write(temp, 0, length);
     }
     byte[] bytes = baos.toByteArray();
     System.out.println(new String(bytes, "UTF-8"));
} catch (Exception e) {
    e.printStackTrace();
}

3. 基于字符的I/O操作

3.1 基于字符的I/O操作类的层次结构

Reader(C)抽象类,读取字符流。
	|
    |-- InputStreamReader(C)字节转字符输入流。
    |	
    |-- BufferedReader(C)字符缓冲输入流。 
    |	
    |-- PipedReader(C)管道字符输入流。
	 

Writer(C)抽象类,写入字符流。
	|
    |-- OutputStreamWriter(C)字符转字节输出流。
    |   
    |-- PrintWriter(C)字符缓冲输出流。
    |   
    |-- PipedWriter(C)管道字符输出流。

3.1 Reader、Writer

Reader(C)抽象类,读取字符流。
API:
int read() 读取单个字符。
int read(char[] cbuf) 将字符读入数组。
abstract int read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。
abstract void close() 关闭该流并释放与之关联的所有资源。


Writer(C)抽象类,写入字符流。
API:
Writer append(CharSequence csq) 附加指定的字符序列。
Writer append(CharSequence csq, int start, int end) 附加指定字符序列的子序列。
void write(int c) 写入单个字符。
void write(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分。
abstract void flush() 刷新该流的缓冲。
abstract void close() 关闭此流,但要先刷新它。

3.2 InputStreamReader、OutputStreamWriter

InputStreamReader(C)字节转字符输入流。
构造函数:
InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。

API:
继承 Reader 抽象类方法。
String getEncoding() 返回此流使用的字符编码的名称。


OutputStreamWriter(C)字符转字节输出流。
构造函数:
OutputStreamWriter(OutputStream out) 创建使用默认字符编码的 OutputStreamWriter。
OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的 OutputStreamWriter。   

API:  
继承 Writer 抽象类方法。
String getEncoding() 返回此流使用的字符编码的名称。

3.3 BufferedReader、BufferedWriter

BufferedReader(C)字符缓冲输入流。   
构造函数:
BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。默认缓冲区为8192字节。
BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。

API:
继承 Reader 抽象类方法。
String readLine() 读取一个文本行。


BufferedWriter(C)字符缓冲输出流。
构造函数:
BufferedWriter(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。默认缓冲区为8192字节。
BufferedWriter(Writer out, int sz) 创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。

API:
继承 Writer 抽象类方法。
void newLine() 写一个换行符。

3.4 PipedReader、PipedWriter

PipedReader(C)管道字符输入流。
构造函数:
PipedReader() 创建尚未连接的 PipedReader。
PipedReader(int pipeSize) 创建一个尚未连接的 PipedReader,并对管道缓冲区使用指定的管道大小。
PipedReader(PipedWriter src) 创建连接到传送 writer src 的 PipedReader。
PipedReader(PipedWriter src, int pipeSize) 
创建一个 PipedReader,使其连接到管道 writer src,并对管道缓冲区使用指定的管道大小。

API:
继承 Reader 抽象类方法。


PipedWriter(C)管道字符输出流。
构造函数:
PipedWriter() 创建一个尚未连接到传送 reader 的传送 writer。
PipedWriter(PipedReader snk) 创建传送 writer,使其连接到指定的传送 reader。 

API:  
继承 Writer 抽象类方法。

3.5 示例

FileOutputStream fos = new FileOutputStream("t.tmp");
OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
BufferedWriter bw = new BufferedWriter(osw);

FileInputStream fis = new FileInputStream("t.tmp");
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
BufferedReader br = new BufferedReader(isr);
@Test
public void readAndWrite() {
    // 文本地址
    String readFile = "1.txt";

    // 1.按行读取
    try (FileReader reader = new FileReader(readFile);
         BufferedReader br = new BufferedReader(reader)) {

        StringBuilder result = new StringBuilder();
        // 读取
        String line = "";
        while((line = br.readLine()) != null) {
            result.append(line);
        }
        // 注:原文本有换行,按此方法读出的结果是没有换行的
        System.out.println(result);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // 2.按字符读取
    try (FileReader reader = new FileReader(readFile);
         BufferedReader br = new BufferedReader(reader)) {

        StringBuilder result = new StringBuilder();
        // 读取
        char[] buf = new char[1024];
        int len = 0;
        while((len = br.read(buf)) != -1) {
            String str = new String(buf, 0 , len);
            result.append(str);
        }
        // 注:此方法读出的结果是完全的
        System.out.println(result);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // 3.写
    // 如果 2.txt 没有创建就会自动创建
    try (FileWriter fw = new FileWriter("2.txt");
         BufferedWriter bw = new BufferedWriter(fw)) {

        bw.write("第一种写");
        bw.newLine(); // 自动根据操作系统选择换行符

        char[] buf = new char[]{'第','二','种','写'};
        bw.write(buf, 0, 4);

        bw.append("第")
                .append("三")
                .append("种")
                .append("写")
                .flush();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

参考:https://docs.oracle.com/javase/8/docs/api/

Java IO层次体系结构 在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了       Java I/O主要包括如下几个层次,包含三个部分:    1.流式部分――IO的主体部分;    2.非流式... 阅读详情

相关推荐

Java IO 类继承结构图汇总

什么是IO流Java的IO流是实现输入/输出的基础,它可以方便的实现数据的输入/输出,在Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为

落枫寒的博客 7363

详解字节输入流InputStream

(一)InputStream:字节输入流 java.io.InputStream:字节输入流 此抽象类是表示字节输入流的所有类的超类 定义了所有子类共性的方法 int read()从输入流中读取数据的下一个字节。 int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。 void close() 关闭此输入流并释放与该流关联的所有系统资源。 1.1 FileInputStream:文件字节输入流 java.io.FileInputStream exten

weiyoo55的博客 2万+

Java InputStream实战指南:轻松读取、操作文件流

Java是一门非常流行的编程语言,广泛应用于各种应用程序的开发。在Java中,输入输出是非常重要的基础功能。其中,InputStream是Java中的一个重要输入流类,用于从输入源读取数据。本文将介绍InputStream类的源代码解析、应用场景案例、优缺点分析、类代码方法介绍以及测试用例。InputStream是Java中的一个抽象类,用于从输入源读取数据。int read():从输入流中读取一个字节的数据。如果已经到达输入流的末尾,则返回-1。

喵手的博客 4348

InputStream输入流和OutputStream输出流

InputStream这个抽象类定义的最重要的方法就是int read(),这个方法会读取输入流的下一个字节,并返回字节表示的int值(0-255),如果已读到末尾,返回-1表示不能继续读取了。这个方法会写入到一个字节到输出流,需要注意的是,虽然传入的是int参数,单只会写入一个字节,即只写入int最低8位表示字节的部分。缓存输出流里面包含了一个8192字节的缓冲区,new这个构造函数默认分配的就是8192个字节的byte[ ]数组(即缓冲区)(多次调用会按顺序依次读取)返回-1表示读取完毕。

m0_53193630的博客 4638

Java中的InputStream使用详解

这些子类实现了InputStream的抽象方法,并提供了特定的读取功能。我们了解了InputStream的概述和常用子类,以及它们的基本读取操作。通过合理使用InputStream,我们可以轻松地读取各种数据源的字节流。它是所有输入流的父类,定义了一些基本的读取操作方法。我们可以使用InputStream的子类来读取不同来源的数据,例如文件、网络连接等。本文将详细介绍InputStream的使用方法,并提供相应的源代码示例。InputStream提供了多个读取方法,可以根据需要选择适合的方法来读取数据。

CodeShiftZ的博客 1425

论文理解【LLM-OR】——【Step-Opt】Training LLMs for Optimization Modeling via Iterative Data Synthesis and

本文提出 Step-Opt-Instruct 方法,针对用 LLM 做 OR 问题求解任务,用迭代问题生成 + 分步验证机制实习更可靠的训练数据合成,从而微调开源 LLM 得到 Step-Opt。在多个 OR 建模基准提升性能,尤其在复杂问题上提升更明显

佚失的诗篇 805

IO流详细解答,博主亲自手敲代码,快速上手(1)

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!InputStream和OutputStream是Java语言中最基本的两个字节输入输出类。File类用来代表文件和文件夹。实现对文件、文件夹的创建和删除。这两个类都是抽象类,不能创建它们的实例,只能使用它们的子类.这两个类都是抽象类,不能创建它们的实例,只能使用它们的子类。创建两个流对象,同时创建了两个输入输出流对象。Java语言中最基本的两个字符输入输出类。

2401_83817171的博客 685

如何在huggingface上申请下载使用llama2/3模型

huggingface-cli download --resume-download 模型名称 --local-dir 存放模型的位置 --local-dir-use-symlinks False --resume-download --token token序列号xxxxxxx。登录huggingface,在模型详情页面上,找到这个表单,填写内容,提交申请。需要使用梯子,country填写梯子的位置吧(比如美国)等待一小时左右,会有邮件通知。

a61022706的博客 1万+

JAVA输入/输出流

本章将对Java的 I/O系统进行讲解,包括I/O的体系结构、流的概念、字节流、处理字节流的基本类InputStream和OutputStream、字符流、处理字符流的基本类Reader和Writer、文件管理、序列化和反序列化等。java.io.File类不属于Java流系统,但它是文件流进行文件操作的辅助类,提供了获取文件基本信息以及操作文件的一些方法,通过调用File类提供的相应方法,能够完成创建文件、删除文件以及对目录的一些操作。创建File类的对象后,就可以使用File的相关方法来获取文件信息。

FXY_11的博客 2099

【pprof】简要学习教程

基本介绍 pprof 是在做性能优化前的性能分析工具。 安装: go get -u github.com/google/pprof 分析工具 go tool pprof 是命令行指令,用于分析 Profiling 数据,源数据可以是 http 地址,也可以是已经 dump 下当 profile 文件;查看模式可以命令行交互模式,也可以是浏览器模式(-http 参数)。 两种应用 服务型应用 _ "net/http/pprof" 包,专用于采集 web 服务 运行数据的分析。即在运行的服务中通过 API .

码农印象 883

基于Matlab-Simulink的大林算法控制系统设计与振铃消除实验

本文详细介绍了基于Matlab-Simulink的大林算法控制系统设计与振铃消除实验。通过分析纯滞后系统的控制难题,探讨大林算法在工业控制中的应用优势,并提供Matlab-Simulink环境搭建、控制器D(z)设计、振铃消除及仿真实验的完整流程。文章还对比了大林算法与PID控制的性能差异,为工程实践提供参考。

dropout6artist的博客 796

【JAVA】JAVA文件操作

Java通过类来对一个文件(包括目录)进行抽象的描述。注意,有File对象,并不代表真实存在该文件。我们先来看看File类中的常见属性、构造方法和方法。常见属性修饰符及类型属性说明依赖于系统的路径分隔符,String类型的表示依赖于系统的路径分隔符,char类型的表示构造方法签名说明根据父目录+孩子文件路径,创建一个新的File实例根据文件路径创建一个新的File实例,路径可以是绝对路径或者相对路径根据父目录+孩子文件路径,创建一个新的File实例,父目录用路径表示方法。

2401_84064192的博客 3627

深度解析电力负荷预测:基于深度学习的完整实战指南

电力负荷预测是智能电网运行中的核心技术之一,准确的负荷预测对于电网的稳定运行、电力市场交易以及能源调度具有重要意义。本文将详细介绍电力负荷预测的完整解决方案,从数据预处理、特征工程到模型构建与评估,提供完整的可执行代码。我们将使用LSTM(长短期记忆网络)和Transformer两种主流深度学习模型进行实现,并通过实际数据集验证模型效果。电力负荷预测是指根据历史负荷数据、气象因素、时间特征等多维信息,预测未来某一时段的电力需求。超短期负荷预测:未来几分钟到几小时短期负荷预测:未来1天到1周中期负荷预测。

YOLO 111

java的Io流学习

Java中io流的学习(一)File:https://blog.csdn.net/qq_41061437/article/details/81672859 Java中io流的学习(二)FileInputStream和FileOutputStream:https://blog.csdn.net/qq_41061437/article/details/81742175 Java中io流的学...

土木转行的人才博客 84

AutoGLM-Phone 实现“豆包 AI 手机”的自动化操作手机的实战方案教程 让普通手机秒变ai手机

是一个基于视觉语言模型(VLM)的 AI 手机智能助理框架。❌ 不依赖固定坐标❌ 不需要提前录制脚本✅ 能“看懂”手机屏幕✅ 能理解自然语言指令✅ 能自动规划操作路径并执行让 AI 像人一样看屏幕、想步骤、点手机。从工程角度看,AutoGLM-Phone 已经具备“AI 手机助理”的完整雏形能看能理解能规划能执行能跨 App所谓的「豆包 AI 手机」,本质上就是这类能力的产品化封装。而现在,这套能力已经可以被普通开发者亲手跑起来、改起来、甚至接入自己的业务场景。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 593

YOLO26 FP16/INT8混合量化实战:精度无损+速度拉满,边缘设备部署最优解

这是混合量化的灵魂,告诉量化器:哪些层不准动,保留FP16。"""判断是否为量化敏感层 → 是则豁免为FP16返回 True=敏感层(FP16),False=可量化(INT8)"""# 1. 检测头回归分支# 2. 小通道1×1卷积# 3. SiLU 激活# 4. 残差ShortcutYOLO26想要在Jetson、RK3588、昇腾、嵌入式NPU上真正落地,FP16/INT8混合量化是唯一最优解。它的核心逻辑不是玄学,而是工程上的精准取舍能量化的层,全部INT8榨性能;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 746

【12章 Java IO流】程序员必看 IO流 详解

【12章 Java IO流:四大抽象类、输出流、输入流、File类、节点流、缓冲流、转换流、打印流、数据流、对象流、随机存取文件流】

小鳴人的博客 2万+

在 PFCG 中完成 SAP Fiori 对象分配:把 Business Catalog、Space、Page 与授权一次讲透

摘要:SAP Fiori权限配置的关键在于理解Business Catalog与Space的分层授权逻辑。传统SAP GUI中直接分配事务码的方式不适用于Fiori环境,必须通过PFCG为角色分配Catalog(提供应用访问权限)和Space(控制首页展示结构)。Catalog会自动解析所需OData服务授权,而Space则决定用户在Launchpad中看到的导航布局。常见错误包括直接分配Page而非其所属Space,或仅配置Space而忽略Catalog。最佳实践是优先使用Catalog驱动授权提议,再在

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

Java输入输出流

介绍的了Java中常见的输入输出流

长安的博客 1103

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java学习(19)

from: http://android.yaohuiji.com/archives/3626Java基础第十九讲:输入输出(一)24DEC本讲内容: File、InputStream、OutputStream、Reader、Writer

Jerry Lin 486

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java IO

文章目录java IO介绍使用方法 java IO介绍 Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。 Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网...

LTC_1234的博客 220

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java I/O

I/O一、File类1. File2.目录实用工具3.目录的检查以及创建 一、File类 1. File File(文件)类这个名字有一定的误导性,我们可能认为它指代的是文件,实际上却并非如此,它技能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称,如果它指定的是一个文件集,我们就可以对此集合调用list()方法,这个方法会返回一个字符数组。 class DirFilter implements FilenameFilter { private Pattern pattern;

qq_41133155的博客 296

Java I/O最简单的几个类

今天把I/O中最简单的几个类整理了一下,之所以整理最简单的,是因为这样会让我更加快速方便的理顺这里面的东西,以前每一次用的时候都要先百度一下,觉得很烦。 首先需要先看一下Read,Write和Stream,那么看下面的图就明确多了。还有本文不涉及I/O中更加复杂的东西,什么管道流啊,对象序列化啊,打印流啊,统统不涉及。 其中,Object***Stream需要用到序列化,这是因为...

dongjing9625的博客 77
上一篇: Java基础—正则表达式
下一篇: Java基础—异常
lercent
博客等级 码龄13年 64粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值