首页 > 其他分享 >四,字节流

四,字节流

时间:2024-10-21 19:59:17浏览次数:1  
标签:字节 fos 写入 FileOutputStream new FileInputStream

Java字节流详解及应用

在Java中,字节流是处理二进制数据的基础,它们可以处理任何类型的数据,因此被称为“万能流”。字节流按照流向划分为字节输入流和字节输出流,按照数据类型划分为字节流和字符流。本文将详细介绍字节流的使用方法,包括构造方法、写数据的方法以及如何实现文件内容的追加写和换行。

字节流概述

按照流向划分

  • 输入流:外部数据 -> Java程序
  • 输出流:Java程序 -> 外部数据

按照数据类型划分

  • 字节流:处理二进制数据,适用于所有类型的数据。
    • 字节输出流
      • OutputStream(抽象类)
        • FileOutputStream(实现子类)
    • 字节输入流
      • InputStream(抽象类)
        • FileInputStream(实现子类)

FileOutputStream

FileOutputStream是字节输出流的一个实现类,用于将数据写入文件。

构造方法

// 使用文件对象创建FileOutputStream
File file = new File("example.txt");
try (FileOutputStream fos = new FileOutputStream(file)) {
    // 写入数据的代码
} catch (IOException e) {
    e.printStackTrace();
}

// 使用文件名创建FileOutputStream
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
    // 写入数据的代码
} catch (IOException e) {
    e.printStackTrace();
}

写数据的方法

// 写一个字节
fos.write(65); // 写入字符'A'

// 写入字节数组
byte[] data = {66, 67, 68}; // 字符'B', 'C', 'D'
fos.write(data);

// 写入字节数组的一部分
fos.write(data, 1, 2); // 从索引1开始写入2个字节,即'C', 'D'

实现文件内容追加写

// 使用带append参数的构造方法
try (FileOutputStream fos = new FileOutputStream("example.txt", true)) {
    fos.write(69); // 写入字符'E',追加到文件末尾
} catch (IOException e) {
    e.printStackTrace();
}

实现写的时候换行

// 写入换行符
fos.write(10); // 换行符的ASCII码是10

FileInputStream

FileInputStream是字节输入流的一个实现类,用于从文件读取数据。

构造方法

// 使用文件对象创建FileInputStream
File file = new File("example.txt");
try (FileInputStream fis = new FileInputStream(file)) {
    // 读取数据的代码
} catch (IOException e) {
    e.printStackTrace();
}

// 使用文件名创建FileInputStream
try (FileInputStream fis = new FileInputStream("example.txt")) {
    // 读取数据的代码
} catch (IOException e) {
    e.printStackTrace();
}

读取数据的方法

// 读取一个字节
int byteRead = fis.read();

// 读取字节数组
byte[] buffer = new byte[1024];
int bytesRead = fis.read(buffer);
// 将读取的字节转换为字符串
String content = new String(buffer, 0, bytesRead);
System.out.println(content);

使用字节输入流读取汉字

由于FileInputStream是字节流,它读取的是文件的原始字节数据。如果文件中包含汉字,读取时需要考虑编码问题。通常,文件的编码和系统的默认编码应该匹配。

try (FileInputStream fis = new FileInputStream("example.txt")) {
    byte[] buffer = new byte[1024];
    int bytesRead = fis.read(buffer);
    // 将读取的字节转换为字符串
    String content = new String(buffer, 0, bytesRead, StandardCharsets.UTF_8);
    System.out.println(content);
} catch (IOException e) {
    e.printStackTrace();
}

结论

字节流是Java中处理二进制数据的基本工具,适用于所有类型的数据。通过FileOutputStreamFileInputStream,我们可以轻松地将数据写入文件和从文件读取数据。在实际编程中,合理使用字节流可以大大提高程序的数据处理能力。通过上述示例和解释,你应该能够更好地理解和应用字节流。

标签:字节,fos,写入,FileOutputStream,new,FileInputStream
From: https://www.cnblogs.com/bjynjj/p/18490241

相关文章

  • Meta 最新 SPIRIT-LM:语音文本无缝转换还能懂情绪;字节回应实习生破坏大模型训练:网传损
        开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • 【java】实现字节数组转int(采用IEEE 754标准)
    /***字节数组转int*采用IEEE754标准**@parambytes*@returnfloat*/publicintbytesToInt(byte[]bytes){//获取字节数组转化成的2进制字符串StringbinaryStr=bytesToBinaryStr(bytes);//......
  • 字符流和字节流的区别
    字节流(BufferedInputStream、BufferedOutputStream)字符流(BufferedReader、BufferedWriter)相同点都有缓冲的实现流,提高了读写的效率不同点1.操作基本单元:字节(硬盘上的所有文件都是以字节形式存在的);2.存在于内存、文件中;3.适合操作文本文件之外的文件(图片、视频、音频)时使用......
  • C10-08-宽字节注入-mysql注入之getshell-sqlmap
    一宽字节注入利用宽字节注入实现“库名-表名”的注入过程。靶场环境:容器镜像:area39/pikachu宽字节概念1、如果一个字符的大小是一个字节的,称为窄字节;2、如果一个字符的大小是两个及以上字节的,称为宽字节;像GB2312、GBK、GB18030、BIG5、Shift_JIS等编码都是常见的宽字节......
  • Java 常用 IO 类说明以及字节流与字符流的区别说明和案例示范
    1.JavaIO类概述1.1什么是IOIO是Input/Output(输入/输出)的缩写,代表了程序与外部环境(如文件、网络、设备等)之间进行数据交换的操作。在Java中,IO操作广泛用于文件读取、写入、网络通信等场景。Java提供了强大的IO类来简化这些操作,并按照不同的数据类型(如字节、......
  • 小于n的最大数,记一道字节面试题
    packageclient;importjava.util.Arrays;publicclassMainTest{publicstaticvoidmain(String[]args){//TestcaseexamplesSystem.out.println(maxN(newint[]{0,1,2,3,4,5,6,7,8,9},235));//Expected:235System.o......
  • 我希望gid字段是表的自增主键,数据类型采用8个字节的无符号整形数据,并且我要指定自增的
    Sir,为了将gid字段设置为自增主键并且采用8字节无符号整型数据类型(即BIGINTUNSIGNED),您可以使用MySQL的AUTO_INCREMENT机制,并且可以通过ALTERTABLE来指定自增的初始值。具体实现步骤如下:1.字段定义字段名称:gid数据类型:BIGINTUNSIGNED(8字节无符号整数)自增......
  • IO流读写文件(字节流(单个字节,字节数组),字节缓冲流(..),字符流(..),字符缓冲流(..))
    IO流【输入输出流】:按照流向划分:输入流:外部数据->java程序输出流:java程序->外部数据按照数据类型划分【根据使用记事本打开是否能够看懂来决定】:字节流【万能流】:字节输出流:......
  • 分享字节跳动的免费AI编程助手(豆包MarsCode)
    邀请新用户注册登录&使用即可赚火星币,凭对应火星币可赢取京东卡和现金,最高可达1万元。接下来来手把手教你如何参与活动,推广赢好礼!合伙人推广赢好礼1.成为合伙人STEP1:点击https://www.marscode.cn/events/s/iBEnTPtB/,进入活动页面,点击【点击赚钱】按钮。 STEP2:活动页面......
  • 宽字节注入
    文章目录转义函数宽字节注入单双引号被过滤转义函数magic_quotes_gpc()该函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误......