IO流-05

法兰克仿真软件FANUC CNC Guide v25.0 安装教程及中文设置 下载地址在文末。我们公司用新到一批FANUC 系统的设备,为方便使用就装了一个 FANUC 数控系统仿真软件FANUC CNC Guide v25.0 ,还是最新版不是市面上流传的老版本。模拟学习一下。 阅读详情


字符流:(文本)
走的是字节,但是要把字节临时存起来
FileReader
FileWriter

BufferedReader
BufferedWriter

字节流:(图片,音乐)
InputStream    OutputStream

想要操作图片流数据,这时就要用到字节流

例:
import java.io.*;
class FileStream
{
 public static void main(String[] args)throws IOException
 {
  readFile_1();
  readFile_2();
  readFile_3();
 }
 
 public static void readFile_3()throws IOException
 {
  FileInputStream fis = new FileInputStream("fos.txt");
  //int num = fis.available();//计算字节数
  
  byte[] buf = new byte[fis.available()];// 定义一个刚刚好的缓冲区,不用再循环
  fis.read(buf);
  
  System.out.println(new String(buf));
  
  fis.close();
 }
 
 public static void readFile_2()throws IOException //读1024个字节打印,这种方式最适中
 {
  FileInputStream fis = new FileInputStream("fos.txt");
  byte[] buf = new byte[1024];
  int len = 0;
  
  while((len=fis.read(buf)) != -1)
  {
   System.out.println(new String(buf, 0, len)); //输出在命令提示符中
  } 
  fis.close();
 }
 
 public static void readFile_1()throws IOException //读一个打印一个
 {
  FileInputStream fis = new FileInputStream("fos.txt");//建立一个读取字节流对象
  int ch = 0;
  while((ch=fis.read()) != -1)//循环判读是否为空
  {
   System.out.println((char)ch); 输出
  }
  fis.close(); 
 }
 
 public static void writeFile()throws IOException
 {
  FileOutputStream fos = new FileOutputStream("fos.txt");//建立一个写入字节流对象
  
  fos.write("abcde".getBytes());//把字符串转成字节 
  
  fos.close();
 }
}

 


复制一个图片
思路:
1,用字节读取流对象和图片关联。
2,用字节写入流对象创建一个图片文件,用于存储获取到的图片数据。
3,通过循环读写,完成数据的存储。
代码:
import java.io.*;
class CopyPic
{
 public static void main(String[] args)
 {
  FileOutputStream fos = null;
  FileInputStream fis = null;
  
  try
  {
   fos = new FileOutputStream("D:\\IMG_0523.JPG");//创建输出流文件对象
   fis = new FileInputStream("E:\\IMG_0523.JPG");//创建读取流文件对象
   
   byte[] bt = new byte[1024];
   int num = 0;
   while((num = fis.read(bt)) != -1)
   {
    fos.write(bt, 0, num);//写入流文件
   }
  }
  catch(IOException e)
  {
   throw new RuntimeException("复制失败"); 
  }
  finally
  {
   try
   {
    if(fis != null)//判断是否为空
     fis.close(); 
   } 
   catch(IOException e)
   {
    throw new RuntimeException("读取关闭失败");
   }
    try
   {
    if(fos != null)
     fos.close(); 
   } 
   catch(IOException e)
   {
    throw new RuntimeException("输出关闭失败");
   }
  }
 }
}

 

/*
演示mp3的复制,通过缓冲区
BufferedOutputStream
BufferedInputStream
*/
import java.io.*;
class CopyMp3
{
 public static void main(String[] args)throws IOException
 {
  long start = System.currentTimeMillis();//获取系统当前时间
  
  copy();
  long end = System.currentTimeMillis();
  System.out.println((end-start)+"毫秒");//计算复制耗时
 }
 
 //通过字节流的缓冲区完成复制
 public static void copy()throws IOException
 {
  BufferedInputStream bis = new BufferedInputStream(new FileInputStream("d:\\Psy.mp3"));//创建读取文件缓冲区对象
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\PP.mp3"));//创建输出文件缓冲区对象
  
  int num =0 ;
  while((num=bis.read()) != -1)
  {
   bos.write(num); //不可以用readLine()和newLine()方法,这个是在文本文件时使用
  }
  bis.close();
  bos.close();
 }
}


字符流:
FileReader       FileWriter
BufferedReader   BufferedWriter

字节流:
FileInputStream         FileOutputStream
BufferedInputStream     BufferedOutputStream

模拟BufferedInputStream

代码:
import java.io.*;
class MyBufferedInputStream
{
 private InputStream in;
 private byte[] buf = new byte[1024*4];
 private int pos = 0, count = 0;
 
 MyBufferedInputStream(InputStream in)
 {
  this.in = in;
 }
 
 //一次读一个字节,从缓冲区(字节数组)获取
 public int myRead()throws IOException
 {
  //通过in对象读取硬盘上数据,并存储buf中
  if(count==0)
  {
   count = in.read(buf);
   if(count<0)
    return -1;
   pos = 0;
   byte b = buf[pos];
   
   count--;
   pos++;
   return b&255;
  }
  else if(count>0)
  {
   byte b = buf[pos];
   
   count--;
   pos++;
   return b&0xff;//255的16进制
  }
  return -1;
 }
 public void myClose()throws IOException
 {
  in.close();
 }
}

/*
byte: -1    ------>  int: -1;
00000000 00000000 00000000 11111111   ------> 11111111 11111111 11111111 11111111

11111111 ---->提升为一个int类型,那不还是-1吗?是-1的
原因是因为在8个1前面补得是1导致的,那么只要在前面补0,
既可以保留原字符数据不变,又可以避免-1的出现。
怎么补0呢?

 11111111 11111111 11111111 11111111
&00000000 00000000 00000000 11111111
----------------------------------------
 00000000 00000000 00000000 11111111
 
 write()方法在做强转为byte型  将指定的字节写入此缓冲的输出流
 read()方法在做提升
*/

个人总结:掌握字节流和字符流的区别,FileInputStream()和FileOutputStream,以及BufferedInputStream()和BufferedOutputStream()的使用,缓冲区是用于提高读写效率的

了解BufferedInputStream()内部实现原理。其他小知识点:"abc".getBytes()  ------>把字符串转成字节        把数组转成字符串输出new String(数组名, start,end)

 

地方政府预算数据抓取:利用Python爬虫获取预算安排、资金分配与支出情况 爬虫是通过模拟浏览器行为,从互联网上自动获取数据的程序。在本案例中,我们将通过爬虫从地方政府的官方网站或预算公开平台抓取各类预算信息。这些信息一般以HTML网页的形式呈现,可以通过爬虫对网页内容进行解析,提取所需的预算数据。Python作为数据抓取的强大工具,凭借其简洁的语法、强大的第三方库(如requestsSelenium等)以及丰富的数据处理能力,成为了开发爬虫应用的首选语言。 阅读详情

相关推荐

LLM大模型-vLLM本地部署全流程:Windows WSL2环境安装、HuggingFace与Modelscope模型加载与本地运行、Docker化部署与镜像分发

vLLM本地部署大模型方案 vLLM是一款高性能大模型推理引擎,通过PagedAttention技术显著提升吞吐量和内存效率,支持低成本、高并发的本地部署。 核心优势: 性能卓越:吞吐量远超同类方案,支持连续批处理等高级功能 成本优化:减少GPU服务器需求 兼容性强:提供类OpenAI的简洁API 部署步骤: 硬件准备:需NVIDIA GPU(如A100/3090),显存≥模型参数量×2(7B模型需14GB) 软件环境: Linux系统或Windows WSL2 安装CUDA 12.1+和Python 3.

2202_75674969的博客 4565

Java IO流

即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。- 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。什么情况下使用字符流:如果读写的都是字符数据,这时候我们就使用字符流。上边看了这么多都是字符流,字符流确实适合对文本的输入输出,下面我们看一下字节流。通过上边的学习,基本上明白了输入流输出流是什么,以及基本语法了吧。....

weixin_47942417的博客 741

硬件工程师入门进阶,一文搞懂,看这篇就对了

每家公司的datasheet都有严格的规范,及独特的风格,有时候还会穿插一些原理性的介绍,比如ADI公司的一些ADC/DAC器件资料里面,还会包含AD/DA转换的原理性讲解内容,Datasheet既可以是我们设计上的好帮手,也是学习的好资料。在出货量大的产品中,尽量减少物料种类,比如开头说的,1%的电阻不得不用,那么5%的替换成1%的,物料种类就减少一种,量就大了,能不能争取更优的价格呢?如果说前面学的是内功,那这一关,是招式、是工具的使用,原理图和PCB设计都有对应的工具,教程也很多,且比较容易上手。

一路带飞的博客 5万+

java byte[] 学习总结

最近在学习netty,突然发现自己对字符数组是那么的陌生(吓死宝宝了)。然后各种学习,然后测试,终于会用一些了。下线的都是本人的学习笔记。 byte表是字符,一个字节,8位,可以组成2^8=256中不同数字。byte存值范围: -128 - 127; -128 -&gt; -1 在十六进制表示范围:0x80 -&gt; 0xff ,在二进制表示范围:10000000 -&gt;11...

XiChuan的博客 5万+

如何创建 SAP ABAP CDS View 的 Association

所以本文我们虽然学习了如何创建 SAP CDS View 的 association,知道了 association 是用来在 CDS View 里将两张数据库表关联起来,但根本不知道怎么使用这个 association. 而且从 association 的写法来看,似乎和本教程之前介绍 inner join,left join 这些数据库表的连接操作没什么区别,都是根据两张表的 carrid 和 connid 字段相同进行的连接。只看到了我们在 CDS View 源代码实现里,放出来的四个字段。

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

PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出)

PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出)

算法如诗的博客 257

05IO流总结

IO流 1.流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 字符流 : 字符流只能操作纯字符数据,比较方便。 字节流的抽象父类: InputStream OutputStream 字符流的抽象父类: Reader Writer 字节流 2.FileInputStream read()一次读取一个字节 FileIn...

qq_43353277的博客 199

PyTorch深度学习实战(29)——变分自编码器(Variational Autoencoder, VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。

盼小辉丶的博客 1万+

05 IO流

05 IO流 ###05.01_异常的概述和分类 * A:异常的概述     * 异常就是Java程序在运行过程中出现的错误。 * B:异常的分类     * 通过API查看Throwable     * Error         * 服务器宕机,数据库崩溃等     * Exception C:异常的继承体系     * Throwable         * Err

seawaveai的博客 334

SAP RAP 校验全流程:从 EML 读取到消息上屏与阻止落库

本文系统梳理了 SAP ABAP RAP 中的校验流程(The Validation Process),结合 Airline/Connection 案例,详细讲解了三类核心校验:语义键唯一性、外键有效性和字段间一致性。文章覆盖了 EML 的 READ ENTITIES 操作、reported-* 与 failed-* 结构的使用方法、消息创建与字段绑定技巧,以及处理草稿数据时的 UNION 查询策略。通过代码示例演示了如何实现校验逻辑、生成错误消息并阻止无效数据持久化,同时提供了常见问题的排查建议。全文注重

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

GD32F4xx 移植agile_modbus软件包与电能表通信

GD32F4XX 移植agile modbus软件包实现与DTSU电能表通信调试记录

madao1234的博客 1304

05-IO流

一、IO流的分类 1、字节流 1、InputStream 方法: 1. read():从输入流读取数据的下一个字节 2. read(byte[] b):从输入流读取一些字节数,并存储到缓冲区 3. read(byte[] b,int off,int len):从输入流读取最大len字节的数据到字节数组 4. flush():刷新此输出流并强制任何缓冲的输出字节被写出 2、OutputStream 方法: 1. writer(int b):将指定的字节写入此输出流 2. writer(byte

rookie__zhou的博客 127

Win11 系统下 VisualStudio2022 配置点云库 PCL1.11.1

安装完成之后打开文件夹E:\PCL 1.11.1\3rdParty\OpenNI2双击 并选择路径 (E:\PCL 1.11.1\3rdParty\OpenNI2) 安装即可全部安装完成之后,将pcl-1.11.1-pdb-msvc2019-win64.zip解压后的 .pdb文件拷贝到(E:\PCL 1.11.1\bin)中设置环境变量:到此,环境变量配置完成。

qq_53545309的博客 1126

05IO流

File文件或目录的抽象 对文件进行操作,首先建文件对象 且文件对象也可以用做字节流的参数 File file=new File(“D:\”); 文件和目录可以通过File封装成对象 对于File,其封装的并不是一个真正的文件,只是文件的路径,可存在可不存在,之后通过具体的操作把这个路径转化为具体的存在 构造: File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 File(String parent, String child) 从父路径名字

qq_43510788的博客 158

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JavaSE进阶05-IO流

Java中提供了哪些流,每个流的特点是什么,每个流对象上的常用方法有 哪些?

cry30867的博客 352

精雕软件(JDpaint) 5.5 绿色版

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

javaDay05-IO流

异常: 略。 File: (1)构造: File(String pathname) File(String parent, String child) File(File parent, String child) (2)方法: 创建 public boolean createNewFile() public boolean mkdir() public boolean mkdirs() 删除 public boolean delete()(注意:删除文件夹时 这个文件夹是空文件夹 如果这个文件夹里面

Geass_Monster的博客 161

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IO流-05:字节流

定义字节数组时,让这个数组的长度足够大,能一次性读完文件中的所有字节,从而实现不截断汉字,达到输出不乱码的要求。下面我们要将D:\01.gif这张动态图,复制到C:\Users\jhj15\Pictures目录下,并令新图片名称为new01.gif//目标:使用字节流完成文件的复制操作//源文件:D:\01.gif//目标文件:C:\Users\jhj15\Pictures\new01.gif (注意:复制过去的时候必须带文件名,否则无法自动生成文件)//调用自定义的复制文件方法。

casually的博客 1707

Day_05 Java IO流

一、 IO流 IO 流可以把数据存储到文本,也可以从文件中读取数据。 常见应用:文件复制(U盘的拷贝)、上传文件(微信、QQ的上传照片等)、下载文件(微信、QQ的图片下载,迅雷文件的下载等)。 分类:分类是站在程序的角度出发的。 输入流:一般是使用文件输入流 FileReader类 输出流:一般是使用文件输入流 FileWriter类 1. 文件输入流 FileReader类 构造函数...

weixin_44738308的博客 145

JAVA SE学习day_05: IO与流操作

一、IO与流 以程序为主体,input(输入)是读、获取、使用输入流的过程,output(输出)是写、发送的过程。 JAVA IO 标准的输入与输出 JAVA IO将读和写按照方向划分为: 输入:用于读取 输出:用于写出 区分方向的参照点是程序,从外界获取信息到程序中的方向是输入,反之是输出。 JAVA IO以标准化的方式对外界设备进行读写操作。使得我们读写外界设备的方式 基本是统一的。 ...

litter_m的博客 296

JAVA io流笔记05 增强流

package FileText; //字节流使用byte 数组!!! //字符流使用char 数组!!! import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import ...

wuyunhao 博客 271

2021-05-31 IO流

文件流 创建文件方法 获取文件信息 常用方法:getname,getabsolutepath,getparent,length,exists,isFile,isDirectory mkdir创建一级目录,mdirs创建多级目录 IO流 流的分类:按操作数据单位分为:字节流和字符流 按数据流的流向不同分为输入流(InputStream)和输出流(OutputStream) 按流的角色不同分为节点流,处理流,包装流 ...

weixin_45232639的博客 102

Java从基础开始_05IO流的体系

IO流的体系总结和相关细节 (可以通过浏览器打开图片或者下载图片来观看)

Huge_Sky 248

IO-05内存操作流06管道流

JAVA中可以将输出的位置设置在内存上,此时使用ByteArrayInputStream,ByteArrayOutputStream来完成输入,输出功能。 利用这两个类实现大小字母的转换:package lianxijihe; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import ja

u012897654的专栏 794

IO_05_综合_对接流

IO_综合_对接流 byteArrayInputStream 意思是程序到字节数组 byteArrayOutputSteam意思是字节数组到程序 将图片转换成字节数组,然后在将字节数组还原成图片 1.图片读取到字节数组 1).图片到程序用FileInputStream 2).程序到字节数组ByteArrayOutputStream byte[] flush = new byte[1024*10]...

Pure_Man_Ben的博客 302

【HDFS篇05】HDFS客户端操作 --- IO流操作

输出倒逼输入 HDFS客户端操作 --- IO流操作 HDFS文件上传 @Test public void putFileToHDFS() throws IOException, InterruptedException, URISyntaxException { // 1 获取文件系统 Configuration configuration = new Configuration(); FileSystem fs = FileSystem.get(new URI("h.

FocusBigData博客 1938

Java 基础(05)IO流和异常处理

异常处理 IO流

stanwuc的博客 615
上一篇: IO流-04
下一篇: IO流-06
麦豆东东
博客等级 码龄14年 2粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值