Java 进阶:Java File & IO—2

Ubuntu 12.04下Postfix部署与生产级配置实战 邮件传输代理(MTA)是Linux系统基础通信设施的核心组件,其原理涉及网络协议栈、进程权限隔离、日志审计与服务依赖管理。Postfix以配置简洁、行为可预测、日志语义清晰著称,成为理解传统系统服务调度机制的理想入口。在老旧但不可替代的生产环境中——如工业网关、SCADA前置机或金融终端——MTA的稳定运行直接关系到告警通知、日志归档与运维可观测性。本文聚焦Postfix在已终止支持的Ubuntu 12.04平台上的完整落地路径,涵盖归档源切换、GPG密钥修复、ABI兼容性规避、七步核心参数调优及telne 阅读详情

目录

一、转换流
二、字节缓冲流
三、字符缓冲流
四、序列化流与反序列化流
五、打印流
六、标准输入、输出流
七、IO流总结

一、转换流

1. OutputStreamWriter 类

(1) 概述
  • java.io.OutputStreamWriter继承 Writer类;就是一个字符输出流,写文本文件;
  • 是字符通向字节的桥梁,将 字符流 转成 字节流
  • write():字符,字符数组,字符串
(2) 构造方法
  • OutputStreamWriter(OuputStream out):接收所有的字节输出流

字节输出流目前只有: FileOutputStream

  • OutputStreamWriter(OutputStream out, String charsetName)

String charsetName:传递 编码表名字:GBK、UTF-8

public class OutputStreamWriterDemo {
    public static void main(String[] args) throws IOException {
        writeUTF();
    }

   //转换流对象OutputStreamWriter写文本,采用UTF-8编码表写入
    public static void writeUTF()throws IOException{
        //创建字节输出流,绑定文件
        FileOutputStream fos = new FileOutputStream("c:\\utf.txt");
        //创建转换流对象,构造方法保证字节输出流,并指定编码表是UTF-8
        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8"); //GBK可以不写
        osw.write("你好");
        osw.close(); //使用close()连刷新带关闭
    }
}

2. InputStreamReader 类

(1) 概述
  • java.io.InputStreamReader继承 Reader;是 字符输入流,读取文本文件
  • 字节流向字符的桥梁,将 字节流 转为 字符流
  • 读取的方法:read() 读取1个字符,读取字符数组
(2) 构造方法
  • InputStreamReader(InputStream in):接收所有的 字节输入流

可以传递的字节输入流: FileInputStream

  • InputStreamReader(InputStream in,String charsetName): 传递编码表的名字
public class InputStreamReaderDemo {
    public static void main(String[] args) throws IOException {
        readUTF();
    }

    //转换流,InputSteamReader读取文本,采用UTF-8编码表,读取文件utf
    public static void readUTF()throws IOException{
        //创建字节输入流,传递文本文件
        FileInputStream fis = new FileInputStream("c:\\utf.txt");
        //创建转换流对象,构造方法中,包装字节输入流,同时写编码表名
        InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
        char[] ch = new char[1024];
        int len = isr.read(ch);
        System.out.println(new String(ch,0,len));
        isr.close();
    }
}

###3. 转换流子类父类的区别

  • 继承关系
    OutputStreamWriter 的子类: FileWriter
    InputStreamReader 的子类:FileReader
  • 区别
  • OutputStreamWriter 和 InputStreamReader 是字符和字节的桥梁:也可以称之为字符转换流。字符转换流原理:字节流 + 编码表
  • FileWriter 和 FileReader:作为子类,仅作为操作字符文件的便捷类存在。当操作的字符文件,使用的是默认编码表时可以不用父类,而直接用子类就完成操作了,简化了代码。
  • 以下三句话功能相同

InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”));//默认字符集。
InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”),“GBK”);//指定GBK字符集。
FileReader fr = new FileReader(“a.txt”);

注意:一旦要指定其他编码时,绝对不能用子类,必须使用字符转换流。什么时候用子类呢?
条件:1、操作的是文件。2、使用默认编码。

二、字节缓冲流

1. 概述

  • 可提高IO流的读写速度
  • 分为字节缓冲流与字符缓冲流

2. 字节输出缓冲流 BufferedOutputStream

  • java.io.BufferedOuputStream作用: 提高原有输出流的写入效率
  • BufferedOuputStream 继承 OutputStream
  • 方法:写入 write 字节,字节数组
  • 构造方法:BufferedOuputStream(OuputStream out):可以传递任意的字节输出流,传递的是哪个字节流,就对哪个字节流提高效率
public class BufferedOutputStreamDemo {
    public static void main(String[] args)throws IOException {
        //创建字节输出流,绑定文件
        //FileOutputStream fos = new FileOutputStream("c:\\buffer.txt");

        //创建字节输出流缓冲流的对象,构造方法中,传递字节输出流
        BufferedOutputStream bos = new
                BufferedOutputStream(new FileOutputStream("c:\\buffer.txt"));

        bos.write(55);
        byte[] bytes = "HelloWorld".getBytes();
        bos.write(bytes);
        bos.write(bytes, 3, 2);

        bos.close();
    }
}

3. 字节输入缓冲流 BufferedInputStream

  • BufferedInputStream,继承 InputStream ,标准的字节输入流
  • 读取方法: read() ,单个字节,字节数组
  • 构造方法: BufferedInputStream(InputStream in):可以传递任意的字节输入流,传递是谁,就提高谁的效率
  • 可以传递的字节输入流 FileInputStream
public class BufferedInputStreamDemo {
    public static void main(String[] args) throws IOException{
        //创建字节输入流的缓冲流对象,构造方法中包装字节输入流,包装文件
        BufferedInputStream bis = new
                BufferedInputStream(new FileInputStream("c:\\buffer.txt"));
        byte[] bytes = new byte[1024];
        int len = 0 ;
        while((len = bis.read(bytes))!=-1){
            System.out.print(new String(bytes,0,len));
        }
        bis.close();
    }
}

4. 四种文件复制方式的效率比较

  • 结论:
  • 字节流读写单个字节 :125250 毫秒
  • 字节流读写字节数组 :193 毫秒
  • 字节流缓冲区流读写单个字节:1210 毫秒
  • 字节流缓冲区流读写字节数组 :73 毫秒
  • 代码
public class Copy {
    public static void main(String[] args)throws IOException {
        long s = System.currentTimeMillis();
        copy_4(new File("c:\\q.exe"), new File("d:\\q.exe"));
        long e = System.currentTimeMillis();
        System.out.println(e-s);
    }
    /*
     * 方法,实现文件复制
     *  4. 字节流缓冲区流读写字节数组
     */
    public static void copy_4(File src,File desc)throws IOException{
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desc));
        int len = 0 ;
        byte[] bytes = new byte[1024];
        while((len = bis.read(bytes))!=-1){
            bos.write(bytes,0,len);
        }
        bos.close();
        bis.close();
    }
    /*
     * 方法,实现文件复制
     *  3. 字节流缓冲区流读写单个字节
     */
    public static void copy_3(File src,File desc)throws IOException{
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desc));
        int len = 0 ;
        while((len = bis.read())!=-1){
            bos.write(len);
        }
        bos.close();
        bis.close();
    }

    /*
     * 方法,实现文件复制
     *  2. 字节流读写字节数组
     */
    public static void copy_2(File src,File desc)throws IOException{
        FileInputStream fis = new FileInputStream(src);
        FileOutputStream fos = new FileOutputStream(desc);
        int len = 0 ;
        byte[] bytes = new byte[1024];
        while((len = fis.read(bytes))!=-1){
            fos.write(bytes,0,len);
        }
        fos.close();
        fis.close();
    }

    /*
     * 方法,实现文件复制
     *  1. 字节流读写单个字节
     */
    public static void copy_1(File src,File desc)throws IOException{
        FileInputStream fis = new FileInputStream(src);
        FileOutputStream fos = new FileOutputStream(desc);
        int len = 0 ;
        while((len = fis.read())!=-1){
            fos.write(len);
        }
        fos.close();
        fis.close();
    }
}

三、字符缓冲流

1. 字符输出缓冲流 BufferedWriter

  • java.io.BufferedWriter继承 Writer
  • 写入方法: write () ,单个字符,字符数组,字符串
  • 构造方法:BufferedWriter(Writer w):传递任意字符输出流,传递谁,就高效谁
  • 能传递的字符输出流: FileWriter, OutputStreamWriter
public class BufferedWrierDemo {
    public static void main(String[] args) throws IOException{
        //创建字符输出流,封装文件
        FileWriter fw = new FileWriter("c:\\buffer.txt");
        BufferedWriter bfw = new BufferedWriter(fw);

        bfw.write(100);
        bfw.flush();
        bfw.write("你好".toCharArray());
        bfw.flush();

        bfw.write("你好");
        bfw.flush();

        bfw.write("我好好");
        bfw.flush();

        bfw.write("大家都好");
        bfw.flush();

        bfw.close();
    }
}

2. 字符输出缓冲流 BufferedWriter—特有方法 newLine

  • void newLine(): 写换行
  • newLine():文本中换行, \r\n也是文本换行
  • 方法具有平台无关性

windows \r\n ; Linux \n

  • newLine()运行结果和操作系统是相互关联的
  • JVM: 安装的是 Windows 版本,newLine()写的就是 \r\n;安装的是 Linux 版本,newLine() 写的就是**\n**

3.字符输入流缓冲流 BufferedReader

(1)概述
  • java.io.BufferedReader继承 Reader,从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
    读取功能: read(), 单个字符,字符数组
    构造方法:BufferedReader(Reader r):可以任意的字符输入流,有:FileReaderInputStreamReader
(2)BufferedReader 自己的功能
  • String readLine(): 读取文本行 \r\n ,读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

获取内容的方法一般都有返回值
int:没有返回的都是 负数
引用类型: 找不到返回 null
boolean: 找不到返回 false

public class BufferedReaderDemo {
    public static void main(String[] args) throws IOException {
        int lineNumber = 0;
        //创建字符输入流缓冲流对象,构造方法传递字符输入流,包装数据源文件
        BufferedReader bfr = new BufferedReader(new FileReader("c:\\a.txt"));
        //调用缓冲流的方法 readLine()读取文本行
        //循环读取文本行, 结束条件 readLine()返回null
        String line = null;
        while((line = bfr.readLine())!=null){
            lineNumber++;
            System.out.println(lineNumber+"  "+line);
        }
        bfr.close();
    }
}

4. 字符流缓冲区流复制文本文件

/*
 *  使用缓冲区流对象,复制文本文件
 *  数据源  BufferedReader+FileReader 读取
 *  数据目的 BufferedWriter+FileWriter 写入
 *  读取文本行, 读一行,写一行,写换行
 */
public class Copy_1 {
    public static void main(String[] args) throws IOException{
        BufferedReader bfr = new BufferedReader(new FileReader("c:\\w.log"));   
        BufferedWriter bfw = new BufferedWriter(new FileWriter("d:\\w.log"));
        //读取文本行, 读一行,写一行,写换行
        String line = null;
        while((line = bfr.readLine())!=null){
            bfw.write(line);
            bfw.newLine();
            bfw.flush();
        }
        bfw.close();
        bfr.close();
    }
}

四、序列化流与反序列化流

1. 概述

  • 对象的序列化:对象中的数据,以流的形式,写入到文件中保存过程称为写出对象,ObjectOutputStream将对象写道文件中,实现序列化
  • 对象的反序列化:在文件中,以流的形式,将对象读出来,读取对象,ObjectInputStream将文件对象读取出来

2. 实现

  • ObjectOutputStream: 写对象,实现序列化
    • 构造方法:ObjectOutputStream(OutputSteam out):传递任意的 字节输出流
    • void writeObject(Object obj):写出对象
  • ObjectInputStream:读取对象,实现反序列化
    • 构造方法:ObjectInputStream(InputStream in):传递任意的 字节输入流,输入流封装文件,必须是序列化的文件
  • Object readObject(): 读取对象
//定义类
public class Person implements Serializable{
   //省略
    }               
}

 public class ObjectStreamDemo {
    public static void main(String[] args)throws IOException, ClassNotFoundException {
        writeObject();
        readObject();
    }

    //ObjectOutputStream
    public static void writeObject() throws IOException{
        //创建字节输出流,封装文件
        FileOutputStream fos = new FileOutputStream("c:\\person.txt");
        //创建写出对象的序列化流的对象,构造方法传递字节输出流
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        Person p = new Person("lisi",25);
        //调用序列化流的方法writeObject,写出对象
        oos.writeObject(p);
        oos.close();

    //ObjectInputStream
    public static void readObject() throws IOException, ClassNotFoundException{
        FileInputStream fis = new FileInputStream("c:\\person.txt");
        //创建反序列化流,构造方法中,传递字节输入流
        ObjectInputStream ois = new ObjectInputStream(fis);
        //调用反序列化流的方法 readObject()读取对象
        Object obj =ois.readObject();
        System.out.println(obj);
        ois.close();
    }
}

3. 细节

(1)transient 瞬态关键字
  • 作用: 被 transient修饰的属性不会被序列化
  • transient关键字只能修饰成员变量
(2)静态不能序列化
  • 原因:序列化是把对象数据进行持久化存储;静态的东西不属于对象,而属于类
(3)Serializable 接口
  • 作用:给需要序列化的类上加标记。该标记中没有任何抽象方法;只有实现了 Serializable接口的类的对象才能被序列化

4. 序列化中的序列号冲突问题

  • 问题产生: 当一个类实现Serializable接口后,创建对象并将对象写入文件,之后更改了源代码 (比如:将成员变量的修饰符有private改成public),再次从文件中读取对象时会报异常

  • 原因:一旦修改了源码,重新编译产生class文件,会根据类的成员重新计算序列号,这样新编译的class文件中的序列号,与原来文件中的序列号就不同了

  • 解决:需要做一个终身不变的序列号! 需要在序列化中自定义序列号

private static final long serialVersionUID = 1478652478456L;
// 这样每次编译类时生成的 serialVersionUID 值都是固定的
//类自定义了序列号,编译器就不会计算序列号

五、打印流

1. 概述

  • 打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式.

2. 打印流根据流的分类

  • 字节打印流 PrintStream
  • 字符打印流 PrintWriter

3. 方法

  • void print(String str): 输出任意类型的数据,
  • void println(String str): 输出任意类型的数据,自动写入换行操作

4. 特点

  • 此流不负责数据源,只负责数据目的
  • 可以操作任意类型的数据。(boolean, int, long, float, double)
  • 打印流,可以开启自动刷新功能
    满足两个条件:
    • 使用特定的构造方法,打开打印流的自动刷新,输出的数据目的必须是流对象:OutputStreamWriter
    • 必须调用 println,printf,format三个方法中的一个,启用自动刷新
  • 为其他输出流,添加功能
  • 永远不会抛出 IOException,但是可能抛出别的异常

5. 构造方法

  • 就是打印流的输出目的端
  • PrintStream构造方法
    • 接收File类型,接收字符串文件名,接收字节输出流OutputStream
  • PrintWriter构造方法
    • 接收File类型,接收字符串文件名,接收字节输出流OutputStream, 接收字符输出流Writer

6. 打印字符数组

  • println数组,只有打印字符数组时是打印内容,其余均打印数组的地址
  • 因为api中定义了打印字符数组的方法,其底层是在遍历数组中的元素,而其他打印数组的方法,都是将数组对象编程Object,其底层再将对象编程String,调用了 String s = String.valueOf(x);方法

7. 利用打印流,完成文本文件的复制

/*
 * 打印流实现文本复制
 * 读取数据源  BufferedReader+File 读取文本行
 * 写入数据目的 PrintWriter+println 自动刷新
 */
public class PrintWriterDemo1 {
    public static void main(String[] args) throws IOException{
        BufferedReader bfr = new BufferedReader(new FileReader("c:\\a.txt"));
        PrintWriter pw = new PrintWriter(new FileWriter("d:\\a.txt"),true);
        String line = null;
        while((line = bfr.readLine())!=null){
            pw.println(line);
        }
        pw.close();
        bfr.close();
    }
}

六、标准输入、输出流

1. 概述

  • 标准输入流: System.in默认指键盘输入
  • 标准输出流: System.out向显示器输出

2. 继承关系

  • PrintStream extends FilterOutputStream
  • FilterOutputStream extends OutputStream

3. 案例

public class StandardIO {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        // 标准输入流的read方法,读取键盘数据的时候,当当前没有键盘输入数据的时候
        // read会阻塞当前线程,使得不能结束,只有自定义协议,才能结束标准输入流
        while((s = br.readLine()) != null) {
            //自定协议,当用户输入886结束接收用户输入
            if("886".equals(s)) {
                break;
            }
            System.out.println("输出:" + s);
        }
        br.close();
    }
}

七、IO流总结

  • 字节流
    • 字节输入流 InputStream
      • FileInputStream 操作文件的字节输入流
      • BufferedInputStream高效的字节输入流
      • ObjectInputStream 反序列化流
    • 字节输出流 OutputStram
      • FileOutputStream 操作文件的字节输出流
      • BufferedOutputStream 高效的字节输出流
      • ObjectOuputStream 序列化流
      • PrintStream 字节打印流
  • 字符流
    • 字符输入流 Reader
      • FileReader 操作文件的字符输入流
      • BufferedReader 高效的字符输入流
      • InputStreamReader 输入操作的转换流(把字节流封装成字符流)
    • 字符输出流 Writer
      • FileWriter 操作文件的字符输出流
      • BufferedWriter 高效的字符输出流
      • OutputStreamWriter 输出操作的转换流(把字节流封装成字符流)
      • PrintWriter 字符打印流
  • 方法:
    • 读数据方法:
      • read() 一次读一个字节或字符的方法
      • read(byte[] char[]) 一次读一个数组数据的方法
      • readLine() 一次读一行字符串的方法(BufferedReader类特有方法)
      • readObject() 从流中读取对象(ObjectInputStream特有方法)
    • 写数据方法:
      • write(int) 一次写一个字节或字符到文件中
      • write(byte[] char[]) 一次写一个数组数据到文件中
      • write(String) 一次写一个字符串内容到文件中
      • writeObject(Object ) 写对象到流中(ObjectOutputStream类特有方法)
      • newLine() 写一个换行符号(BufferedWriter类特有方法)
  • 向文件中写入数据的过程
    1,创建输出流对象
    2,写数据到文件
    3,关闭输出流
  • 从文件中读数据的过程
    1, 创建输入流对象
    2, 从文件中读数据
    3, 关闭输入流
  • 文件复制的过程
    1, 创建输入流(数据源)
    2, 创建输出流(目的地)
    3, 从输入流中读数据
    4, 通过输出流,把数据写入目的地
    5, 关闭流

File类

  • 方法
  • 获取文件名称 getName()
  • 获取文件绝对路径 getAbsolutePath()
  • 获取文件大小 length()
  • 获取当前文件夹中所有File对象 File[] listFiles()
  • 判断是否为文件 isFile()
  • 判断是否为文件夹 isDirectory()
  • 创建文件夹 mkdir() mkdirs()
  • 创建文件 createNewFile()
  • 异常
    • try…catch…finally捕获处理异常
    • throws 声明异常
    • throw 抛出异常对象
  • 异常的分类
    • 编译期异常 Exception
    • 运行期异常 RuntimeException
  • 注意:
    • 编译期异常,必须处理,不然无法编译通过
    • 运行期异常,程序运行过程中,产生的异常信息
  • 实现文件内容的自动追加
    • 构造方法
      • FileOutputStream(File file, boolean append)
      • FileOutputStream(String fileName, boolean append)
      • FileWriter(File, boolean append)
      • FileWriter(String fileName, boolean append)
  • 实现文件内容的自动刷新
    • 构造方法
      • PrintStream(OutputStream out, boolean autoFlush)
      • PrintWriter(OutputStream out, boolean autoFlush)
      • PrintWriter(Writer out, boolean autoFlush)
Java Stream、File、IO Java Stream、File 和 IO 是 Java 编程中不可或缺的部分,用于处理数据、文件操作和输入/输出。掌握这些概念对于提高 Java 编程技能至关重要。通过本文的介绍,希望您能更好地理解 Java Stream、File 和 IO 的基本原理和使用方法。 阅读详情

相关推荐

芯片低功耗设计实战:CPF与UPF流程选择指南(附工具对比)

本文深入探讨了芯片低功耗设计实战中CPF与UPF流程的选择策略。文章从两者本质差异与演进脉络出发,结合Cadence与Synopsys工具链的深度支持实况,为工程师提供了基于项目场景的决策框架。重点分析了在混合工具链环境下如何实施流程与验证,并强调了利用Spyglass等工具确保功耗意图无损传递的关键技巧,旨在帮助团队做出明智的流程抉择,提升设计效率与可靠性。

weixin_29197051的博客 408

27--缓冲流、转换流、对象流及其他流的使用

Java中缓冲流、转换流、对象流及其他流的使用。

憨憨浩浩的博客 508

【LTspice】005 伯德图绘制

目录 1 伯德图介绍 2 LTspice 截止频率验证 3 LTspice中如何添加光标 4 LTspice中如何将 幅频 和 相频曲线分开 1 伯德图介绍 Bode图由对数幅频特性和对数相频特性两张图组成。伯德图_百度百科 (1)对数幅频特性曲线 对数幅频特性是频率特性的对数值L(ω)=20lgA (ω)(dB)与频率ω的关系曲线;对数幅频特性的纵轴采用线性分度,为幅值的分贝数,即 L(ω)=20lgA(ω),A(ω)每增加10倍,L(ω)增加20dB;横坐标采用对数分度,即横轴上的ω取

m0_59642765的博客 1万+

byte[]字节操作:byte[] 截取长度&byte[]数组转16进制&byte[]转数据类型工具类

一.字节定义 字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。Byte是从0-255的无符号类型,所以不能表示负数。 Byte即字节的意思,通常在读取非文本文件时(如图片,声音,可执行文件)需要用字节数组来保存文件的内容。在下载文件时,也是用byte数组作临时的缓冲器接收文件内容。所以说byte在文件操作时是必不可少的。不管是对文件写入还是读取都要用到。 先来了解一下数组的定义: byte [] aa = {0,1,2,3,4,5}; //字

panlupeng的博客 1万+

超融合架构实战:如何用3节点搭建企业级分布式存储系统?

本文详细介绍了如何利用3节点搭建企业级分布式存储系统的超融合架构实战指南。从硬件选型、网络配置到存储策略调优,提供了全面的实操建议和性能优化技巧,帮助企业实现高效、弹性的IT基础设施。特别适合需要简化运维、提升存储性能的中型企业参考。

weixin_29200485的博客 327

从零组装电赛送药小车:OpenMV视觉核心+STM32控制,我的软硬件联调全记录

本文详细记录了从零构建电赛智能送药小车的全过程,重点解析了OpenMV视觉识别与STM32控制的深度协同方案。通过硬件选型对比、通信协议设计、PID调参等实战经验,解决了巡线精度、十字路口识别等核心问题,最终实现稳定可靠的送药小车系统,助力电子设计竞赛取得优异成绩。

weixin_42641741的博客 449

java -- 缓冲流、转换流、序列化流

当jvm反序列化对象时, 能找到class文件, 但在序列化对象后class文件发生了改变, 则反序列化失败, 抛出异常 InvalidClassException。缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。类,该类能够方便地打印各种数据类型的值,是一种便捷的输出方式。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行。用一个字节序列可以表示一个对象,该字节序列包含该。: 使用指定的文件名创建一个新的打印流。

weixin_39158966的博客 269

华为OD机试双机位C卷-魔法收积木 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【魔法收积木】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od - 魔法收积木。

qq_45776114的博客 1941

javaIO流之缓冲流

Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符流的缓冲。缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或者当缓冲区为空时一次性从文件或输入流中读取一定量的数据。

恒二哥的博客 3158

从 SAP ABAP 到 S/4HANA,SAML 2.0 单点登录到底是怎么跑起来的

在很多 SAP 项目里,SSO 不是一个锦上添花的功能,而是系统能不能顺利上线的基本门槛。

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

Python爬虫实战:基于最新技术爬取国家企业信用信息公示系统数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的国家企业信用信息公示系统爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、数据解析与存储等高级话题,最终实现一个完整的爬虫系统。文章包含大量实战代码示例,适合中高级Python开发者学习参考。网络爬虫(Web Crawler)是一种自动获取网页内容的程序,广泛应用于搜索引擎、数据分析和商业情报收集等领域。通用爬虫:如搜索引擎爬虫,广泛抓取互联网公开信息聚焦爬虫:针对特定领域或网站的数据采集增量式爬虫:只抓取更新内容,减少资源消耗。

2201_76125261的博客 2410

java 写入byte数组_Java 进阶:Java File & IO—2

目录一、转换流二、字节缓冲流三、字符缓冲流四、序列化流与反序列化流五、打印流六、标准输入、输出流七、IO流总结一、转换流1. OutputStreamWriter 类(1) 概述java.io.OutputStreamWriter继承 Writer类;就是一个字符输出流,写文本文件;是字符通向字节的桥梁,将 字符流 转成 字节流write():字符,字符数组,字符串(2) 构造方法OutputSt...

weixin_29000417的博客 1227

C#工业相机毫秒级采集与处理:实现7x24小时稳定运行

在机器视觉行业摸爬滚打这么多年,我见过太多这样的项目:工程师用C#接了海康或巴斯勒的相机,写个GrabLoop,在实验室里跑个半小时一切正常。结果一到客户现场,7x24小时连轴转,问题就全暴露了——运行8小时后内存缓慢上涨,最终OOM崩溃每隔几分钟出现一次200ms的采集卡顿,导致飞拍漏检CPU占用率莫名飙高,但帧率却上不去程序假死,相机SDK回调不再触发,只能重启这些问题的根源,往往不是相机硬件不行,也不是算法太慢,而是C#托管运行时与工业相机底层驱动之间的“工程摩擦”。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 197

Java-进阶:Java-File-&-IO—2

目录 一、转换流 二、字节缓冲流 三、字符缓冲流 四、序列化流与反序列化流 五、打印流 六、标准输入、输出流 七、IO流总结 一、转换流 1. OutputStreamWriter 类 (1) 概述 java.io.OutputStreamWriter继承 Writer类;就是一个字符输出流,写文本文件; 是字符通向字节的桥梁,将 字符流 转成 字节流 write():字符,字符数组,字符串 (2) 构造方法 OutputStreamWriter(OuputStream out):接收所有的字节输出流

m0_57081562的博客 92

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java-进阶:Java-File-&-IO—2,Java常见编程笔试题

读取功能:read(), 单个字符,字符数组//定义类//省略//创建字节输出流,封装文件//创建写出对象的序列化流的对象,构造方法传递字节输出流//调用序列化流的方法writeObject,写出对象//创建反序列化流,构造方法中,传递字节输入流//调用反序列化流的方法 readObject()读取对象打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式.字节流字节输入流 InputStream。

jixuczy的博客 329

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java-进阶:Java-File-&-IO—2,linux学习路线

字节流向字符的桥梁,将 字节流 转为 字符流 读取的方法:read() 读取1个字符,读取字符数组 (2) 构造方法 可以传递的字节输入流: FileInputStream public class InputStreamReaderDemo { public static void main(String[] args) throws IOException { readUTF(); } //转换流,InputSteamReader读取文本,采用UTF-8编码表,读取文件utf public st.

m0_64384202的博客 540

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java的File与IO流

File类位于java.io包下,是文件和目录路径名的抽象表示,提供了一系列对文件和文件夹本身操作的方法,它不能读写数据。read(字节数组)一次性读取多个字节,注意要判断实际读取的字节到底有多少,以免错误地读取字节数组之前遗留的数据。默认缓冲池大小为8KB。注意:File类是路径名的抽象表示,构建一个File实例并不会创建一个文件,不管文件是否存在,都可以创建任意文件名的File实例。[] listFiles() 一级文件对象数组,包含隐藏文件,无权限访问则为null,主调为文件也为null。

m0_73077892的博客 1829

Java 进阶File类、IO流

Java进阶必会内容FIle、IO流

80后大叔爱学习 982

Java进阶技术_File-字符集-IO流

这几天太累了,有一个不错的女性朋友聊天,所以更新晚了 接下来是FIle 字符集 IO流 ,总结一下学习吧。

qq_61066711的博客 1121

【Java进阶篇】—— File类与IO流

总结了File类、基于Reader、Writer、InputStream、OutputStream四个父类流引申出所有种类的IO流

欢迎来到我的世界 3253

【Java基础】File类 IO流

1. File的使用 2. 补充知识: 方法递归 3. 补充知识: 字符集 4. IO流: 概述 5. IO流: 字节流 6. IO流: 资源释放的方式

LKS_010620的博客 2659

Java的File类和IO流

File类和IO流基础

2302_81034736的博客 1349

Java进阶——IO 流

转换流也是处理流的一种。转换流提供了在字节流和字符流之间的转换。lnputStreamReader:将 InputStream 转换为 Reader,字节输入流转换成字符输入流OutputStreamWriter:将 Writer 转换为 OutputStream,字符输出流转换成字节输出流字节流中的数据都是字符时,转成字符流操作更高效。很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。对象流是处理流的一种。

2509_93882485的博客 1899

Java笔记 - File & IO

文章目录文件构造方法File类判断和获取递归遍历目录(重要)字节流IO流两个基类创建字节流常用方法换行和追加写入异常处理读数据使用数组缓存读写复制 (重要)字节缓冲流字符流编码表字符流的编码方法读写数据FileReader 和 FileWriter (便捷类)字符缓冲流特有功能异常的处理特殊操作流标准输入流标准输出流打印流字符打印流 PrintWriter序列化流序列化Serializable 序...

ECNU第一菜鸡的博客 931

Java--File类与IO流操作

本篇文章主要讲解了Java中有关File类的操作。IO流的分类,流的处理,其中关于流的处理部分,主要讲解了缓冲流、转换流和对象流的等等,并附带有关内容的练习和使用。

m0_72047169的博客 1609

java将数组数据逐行写入txt_Java 进阶:Java File & IO—1

目录一、File 类二、IO流三、字节输出流四、字节输入流五、字节流文件复制六、字符输出流七、字符输入流八、字符流复制文本文件一、File 类1. 概述文件 和 目录路径名 的抽象表达形式Java中把文件或者目录(文件夹)都封装成 File对象我们要去操作硬盘上的文件,或者文件夹只要找到 File这个类即可File类对象,只是路径名的 抽象表示形式,即使该文件在操作系统上并不物理存在,也可以创建这...

weixin_39841825的博客 1463
上一篇: Java进阶:什么是TCP/IP?如何运用!
下一篇: Java 进阶:集合框架1
JavaCaiy
博客等级 码龄6年 1万+粉丝 95原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值