黑马程序员--java中的io流

---------------------- android培训java培训、期待与您交流! ----------------------


1.什么是io流?
   io包括输入和输入流,输入流指的是将数据以字符或字节形式从外部媒介比如文件、数据库等读取到内存中所有也分为字符输入流和字节输入流。
   输入流指的是将内存中的数据写入外部媒介,也分为了字符输出流和字节输入流。
 


2.使用io流总结
   io流:用于处理设备上的数据。
    设备:硬盘,内存,键盘录入。
   io有具体的分类:
    1.根据处理的数据类型不同:字节流和字符流
    2.根据流向不同:输入流和输出流
   
   字节流和字符流的区别:
   1.字节流读取的时候,读到一个字节就返回一个字节。字符流使用了字节流杜鳌一个活多个字节时,先去查指定编码表,将查到的字符返回。
   2.字节流可以处理是哟有类型数据,如图片,mp3,avi等,而字符流只能处理字符数据
   
   io的体系,所具备的基本功能就有两个:读和写
    1.字节流
      inputStream(读),outputStream(写)。
    2.字符流:
      Reader(读),Writer(写)。
   
   Reader中的常见方法:
   int read(); //读取一个字符,就返回的是读到的那个子字符,如果读到流的末尾,返回-1;
   int read(char[]); //将读到的字符存入指定的数组中,返回的是读到到子都的个数,也就是往数组里装的元素的个数,如果读到流的末尾,返回-1.
   close();// 读取字符其实用的是系统的功能,就希望使用完毕后,进行资源的释放
  
   Writer中常见的方法:
   write(ch);//将一个字符写入到流中。
   write(char[]);// 将一个字符数组写入到流中
   write(String);//将一个字符串写入到流中
   flush();//刷新流,将流中的数据刷新到目的地中,流还存在
   close();//关闭资源,在关闭前会先调用flush方法,刷新流中的数据去目的地,然后流关闭。
   
   FileWirter:
   该类没有特有的方法,只有自己的构造函数。
   该类特点在于,
   1.用于处理文本文件。
   2.该类中又默认的编码表,
   3.该类中又临时缓冲。
   构造函数:在写入流对象初始化时。必须要有一个存储数据的目的地。
   FileWriter(String filename);//调用系统资源。在指定位置穿件一个文件,如果该文件已经存在,将会被覆盖
   FileWriter(String filename,boolean append);//当传入的boolean类型值为true时,会在指定文件末尾处进行数据的续写
   


   FileReader:
    1.用于读取文本文件的流对象
    2.用于关联文本文件
    FileReader(String filename); //在读取流对象初始化的时候,必须要猴子腚一个被读取的文件。如果该文件不存在会发生FileNotFoundException
    代码示例;
    class Demo{
  public static void main(String[] args)throws IOException {
FileWriter fw = new FileWrier("test.txt");
fw.write("asfsdf");
fw.flush();
fw.write("sdsfsdf");
fw.close();
}
    }
   对于读写或者写入流对象的构造函数,以及读写方法,还有刷新关闭功能都会抛出IOxception或其子类。




  字符流的缓冲区:
  缓冲区的出现提高了对流的操作效率。
  原理:其实就是将数字进行封装:
  对应的对象:
  BufferedWriter:
   特有方法:
     newLine();//跨平台的换行符
    BufferedReader:
    特有方法:
   readLine();//一次赌一行,到行标记时,将航标机之前的字符数据作为字符串返回,当读到末尾时,返回null
   在使用缓冲区对象时,要明确,缓冲的存在是为了增强流的工呢过而存在,
   所以在建立缓冲区对象时,要先有流对象村子啊。
   其实缓冲内部就是在使用流对象的方法,只不过假如了数组对数据惊醒了临时存储,为了提高操作数据的效率。
    代码上的体现:
    写入缓冲区对象。
    BuffereWriter  bufw = new Buffed Writer(new FileWriter("test.txt")); //建立缓冲区对象必须把流对象作为参数传递给缓冲区的构造函数
    bufw.write("adfd"); //将数据写入到了缓冲区。
    bufw.flush();//对缓冲区的数据进行刷新,将数据刷到目的地中
    bufw.close();//关闭缓冲区,其实关闭的是被包装在内部的流对象
    BufferedReader bufr = new BufferedReder(new FileReader("buf.txt"));
    String line = null;
    //按照行的形式取出数据,取出的每一个行数据不包含回车符。
    While((line = bufr.readLine())!=null){
System.out.println(line);
    }
   bufr.close();


    
  练习:通过缓冲区的形式,对文本进行拷贝。
   poublic static void main(String args){
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line);
  bufw.newLine();
bufw.flush();
}
bufw.close();
bufr.close();
   }


   readLine();
    其实缓冲区中的该方法,用的还是与缓冲区关联的流对象的read方法。
    只不过,每一次读到一个字符,先不进行具体操作,先进行临时存储。
   当读取到回车暴击时,将临时日容器中存储的数据一次性返回。
  
   抽象基类:inputStream,outputStream.
   字节流可以操作任何数据
   注意:字符流使用的数组时字符数组char[]
         字节流使用的数组是字节数组byte[]


   FileOutputStream fos = new FileOutputStream("a.txt");
   fos.write("adfaf");直接将数据写入到了目的地
   fos.close();//值关闭资源
   FileImputStream fis = new FileInputStream("a.txt");
   //如果文件不大,可以这样操作
   
   
转换流;
  特点:
  1.是字节流和字符流之间的桥梁
  2.该流对象中可以对读取到的字节数据惊醒指定编码表的编码装换。
  什么时候使用呢?
  1.当字节和字符或字节之间有转换动作时
  2.流操作的数据需要进行编码表的指定时
  
  具体的对象体现;
  1.InpuStreamReader:字节到字符的桥梁
  2.OutputStreamWriter: 字符到字节的桥梁
  
  这两个流对象是字符流体系中的成员
  那么他们有转换作用,而本身又事字符流,所以在构造的时候,需要传入字节流对象进来
  
  构造函数:
  inputStreamReader(InputStream);//通过该构造函数初始化,使用的是本系统默认的编码表GBK
  InputstreamReader(InputStream in,String chaeSet);//通过该构造函数初始化,可以指定编码表
  outputstreamWriter(OutputStream);//通过该构造函数初始化,使用的是本系统默认的编码表GBK
  outputstreamWriter(OutputStream out,String CharSet);//通过该构造啊哈念书初始化,可以指定编码表


Fiel类:
   该类的出现是对文件系统中的文件以及文件夹进行对象的封装。
   可以通过对象的思想来操作文件以及文件夹
   1.构造函数:
   file(String parent,String child);
   File(File parent,String child);
  常见方法:
   boolean createNewFile(); //创建文件,如果被穿件的文件已经存在,则不创建
   boolean mkdir();//创建文件夹。
   boolean mkdirs();//创建多级文件夹。
   boolean delete();//可用于删除文件或者文件夹
   void deleteOnExit();//删除文件动作交给系统完成,无论是否发生异常,刺痛在推出时执行删除动作。
   boolean exists(); //判断文件或者文件是否存在
   boolean isFile(); //判断File对象中封装的是否是文件
   boolean isDirectory();//判断Dile对象中封装的是否是文件夹
   boolean isHidden();//判断文件或者文件夹是否隐藏,在获取硬盘文件或者文件夹时,对于系统目录中的文件,java是无法访问的,所以在遍历,可以避免遍历隐藏文件
   getName(); //获取文件或者文件夹的名称。
   getpath();//file对象中封装的路径是什么,获取的就是什么。
   long length();//获取文件大小
   long lastModified();//获取文件或者文件最后一次修改的时间 




递归:
      其实就是在使用一个功能过程中,又对该功能有需求。
     就出现了函数自身调用自身
  注意:
   1.一定要限定条件,否则内存溢出
   2.使用递归时,调用次数不要过多,否则也会出现内存溢出
  
Io包中其他对象;
  1.打印流.
     printStream:
     是一个字节打印流,System.out对应的类型就是PrintStream。它的构造函数可以接受三种数据类型的值
     1.字符串路径
     2.File对象
     3.OutpoutStream
     printWriter:
      是一个字符打印流,构造函数可以接受四种类型的值
     1.字符串路径
     2.File对象
     3.outputStream
     4.Writer


管道流;
  PipedinputStream
  pipedOutputStream
  特点:
  读取管道流和写入管道里可以进行连接
  连接方式:
  1.通过两个流对象的构造函数。
  2.通过两个对象的connect方法
   通常两个流在使用时,需要加入多线程技术,也就是让读写同时运行。
   注意:对read方法,该方法是阻塞式的,也就是没有数据的情况,该方法会等待



---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.youkuaiyun.com/heima

资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 无锡平芯微半导体科技有限公司生产的A1SHB三极管(全称PW2301A)是一款P沟道增强型MOSFET,具备低内阻、高重复雪崩耐受能力以及高效电源切换设计等优势。其技术规格如下:最大漏源电压(VDS)为-20V,最大连续漏极电(ID)为-3A,可在此条件下稳定工作;栅源电压(VGS)最大值为±12V,能承受正反向电压;脉冲漏极电(IDM)可达-10A,适合处理短暂高电脉冲;最大功率耗散(PD)为1W,可防止器件过热。A1SHB采用3引脚SOT23-3封装,小型化设计利于空间受限的应用场景。热特性方面,结到环境的热阻(RθJA)为125℃/W,即每增加1W功率损耗,结温上升125℃,提示设计电路时需考虑散热。 A1SHB的电气性能出色,开关特性优异。开关测试电路及波形图(图1、图2)展示了不同条件下的开关性能,包括开关上升时间(tr)、下降时间(tf)、开启时间(ton)和关闭时间(toff),这些参数对评估MOSFET在高频开关应用中的效率至关重要。图4呈现了漏极电(ID)与漏源电压(VDS)的关系,图5描绘了输出特性曲线,反映不同栅源电压下漏极电的变化。图6至图10进一步揭示性能特征:转移特性(图7)显示栅极电压(Vgs)对漏极电的影响;漏源开态电阻(RDS(ON))随Vgs变化的曲线(图8、图9)展现不同控制电压下的阻抗;图10可能涉及电容特性,对开关操作的响应速度和稳定性有重要影响。 A1SHB三极管(PW2301A)是高性能P沟道MOSFET,适用于低内阻、高效率电源切换及其他多种应用。用户在设计电路时,需充分考虑其电气参数、封装尺寸及热管理,以确保器件的可靠性和长期稳定性。无锡平芯微半导体科技有限公司提供的技术支持和代理商服务,可为用户在产品选型和应用过程中提供有
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 在 JavaScript 中实现点击展开与隐藏效果是一种非常实用的交互设计,它能够有效提升用户界面的动态性和用户体验。本文将详细阐述如何通过 JavaScript 实现这种功能,并提供一个完整的代码示例。为了实现这一功能,我们需要掌握基础的 HTML 和 CSS 知识,以便构建基本的页面结构和样式。 在这个示例中,我们有一个按钮和一个提示框(prompt)。默认情况下,提示框是隐藏的。当用户点击按钮时,提示框会显示出来;再次点击按钮时,提示框则会隐藏。以下是 HTML 部分的代码: 接下来是 CSS 部分。我们通过设置提示框的 display 属性为 none 来实现默认隐藏的效果: 最后,我们使用 JavaScript 来处理点击事件。我们利用事件监听机制,监听按钮的点击事件,并通过动态改变提示框的 display 属性来实现展开和隐藏的效果。以下是 JavaScript 部分的代码: 为了进一步增强用户体验,我们还添加了一个关闭按钮(closePrompt),用户可以通过点击该按钮来关闭提示框。以下是关闭按钮的 JavaScript 实现: 通过以上代码,我们就完成了点击展开隐藏效果的实现。这个简单的交互可以通过添加 CSS 动画效果(如渐显渐隐等)来进一步提升用户体验。此外,这个基本原理还可以扩展到其他类似的交互场景,例如折叠面板、下拉菜单等。 总结来说,JavaScript 实现点击展开隐藏效果主要涉及 HTML 元素的布局、CSS 的样式控制以及 JavaScript 的事件处理。通过监听点击事件并动态改变元素的样式,可以实现丰富的交互功能。在实际开发中,可以结合现代前端框架(如 React 或 Vue 等),将这些交互封装成组件,从而提高代码的复用性和维护性。
一、AutoCAD 2016的工作界面 组成要素:由应用程序菜单、标题栏、快速访问工具栏、菜单栏、功能区、命令窗口、绘图窗口和状态栏组成。 1. 切换至AutoCAD 2016 1)工作空间 模式类型:提供草图与注释、三维基础、三维建模三种工作空间模式 二维绘图功能:在草图与注释空间中可使用默认、插入、注释、参数化、视图管理等选项卡进行二维图形绘制 切换方法: 快速访问工具栏→工作空间按钮下拉列表 状态栏→切换工作空间按钮下拉列表 三维功能:三维基础空间包含可视化、坐标、长方体等三维建模工具 2)应用程序菜单 位置:位于界面左上角 核心功能: 搜索命令 文件操作(新建/打开/保存/另存为/输出/发布/打印/关闭) 最近文档管理(可按日期/大小/类型排序) 选项设置(打开选项对话框) 3)标题栏 显示内容:当前程序名称(Autodesk AutoCAD 2016)和文件名称 信息中心功能: 帮助搜索 Autodesk账户登录 软件更新检查 窗口控制(最小化/最大化/关闭) 4)菜单栏 显示设置:通过自定义快速访问工具栏→显示菜单栏选项启用 菜单结构:包含文件、编辑、视图、插入等11个主菜单项 命令示例: 绘图→直线:进入直线绘制模式 绘图→圆弧:提供三点、起点-圆心-端点等11种绘制方式 5)选项卡和面板 组织结构: 选项卡(默认/插入/注释等) 面板(绘图/修改/注释等) 命令按钮(直线/多段线/圆等) 操作程:单击命令按钮→绘图区操作→Enter键确认 6)工具栏 调用方式:工具→工具栏→AutoCAD→选择所需工具栏 控制方法: 显示:勾选对应工具栏选项 隐藏:取消勾选或点击工具栏关闭按钮 示例操作:绘图工具栏包含直线、构造线等绘图工具按钮 7)绘图窗口 主要功能:核心绘图工作区域 导航控制: 滚动条调整视图 模型/布局空间切换 显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值