当前位置: 首页 > news >正文

打开网站需要用户名密码谷歌浏览器下载手机版最新版

打开网站需要用户名密码,谷歌浏览器下载手机版最新版,html网站管理,如何自己免费建网站博客主页#xff1a;誓则盟约系列专栏#xff1a;Java SE 专栏关注博主#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出#xff0c;及时修改感谢大家点赞#x1f44d;收藏⭐评论✍ Java I/O 简介 Java I/O#xff08;输入/输出#xff09;是 Java 程序中…博客主页誓则盟约系列专栏Java SE 专栏关注博主后期持续更新系列文章如果有错误感谢请大家批评指出及时修改感谢大家点赞收藏⭐评论✍  Java I/O 简介 Java I/O输入/输出是 Java 程序中用于处理数据输入和输出的重要部分。 输入流Input Streams用于从数据源读取数据。常见的输入流包括FileInputStream从文件读取、BufferedInputStream提高读取效率等。 输出流Output Streams用于将数据写入到目的地。例如FileOutputStream向文件写入、BufferedOutputStream提高写入效率。 字符流Reader 和 Writer处理字符数据更适合处理文本。如FileReader和FileWriter。 缓冲流Buffered Streams通过缓冲区来减少实际的 I/O 操作次数提高性能。 对象流Object Streams用于实现对象的序列化和反序列化如ObjectInputStream和ObjectOutputStream。 在实际编程中根据具体的需求选择合适的 I/O 流可以提高程序的效率和可读性。 计算机总线结构    那么为什么会有I/O呢其实I/O无时无刻不在我们身边比如读取硬盘上的文件网络文件的传输鼠标键盘输入也可以是接受单片机发回的数据而能够支持这些操作的设备就是I/O设备。 我们可以大致看一下整个计算机的总线结构 最核心的是CPUCPU像计算机的大脑一样是计算机的核心部件几乎所有的计算都是靠这个CPU来进行的CPU懂的比较多它可以对各种类型进行计算但是随着时代的发展对图形的要求越来越高CPU就略显乏力于是就出现了GPU(显卡)显卡就是专门对于图形进行计算。 通过北桥芯片连接到内存这样CPU就可以对内存进行操作南桥芯片是用于读取U盘或者硬盘内的数据 。 常见的I/O设备一般是鼠标、键盘这类通过USB进行传输的外设或者是通过Sata接口或是M.2连接的硬盘。一般情况下这些设备是由CPU发出指令通过南桥芯片间接进行控制而不是由CPU直接操作。 而我们在程序中想要读取这些外部连接的!O设备中的内容就需要将数据传输到内存中。而需要实现这样的操作单单凭借一个小的程序是无法做到的而操作系统(如:Windows/inux/MacOS)就是专门用于控制和管理计算机硬件和软件资源的软件我们需要读取一个IO设备的内容时就可以向操作系统发出请求由操作系统帮助我们来和底层的硬件交互以完成我们的读取/写入请求。 JDK提供了一套用于IO操作的框架为了方便我们开发者使用就定义了一个像水流一样根据流的传输方向和读取单位分为字节流InputStream和OutputStream以及字符流Reader和Writer的IO框架当然这里的流指的是数据流通过流我们就可以一直从流中读取数据直到读取到尽头或是不断向其中写入数据直到我们写入完成而这类IO就是我们所说的BIO。 文件字节流 字节流一次读取一个字节也就是一个 byte 的大小而字符流顾名思义就是一次读取一个字符也就是一个 char 的大小(在读取纯文本文件的时候更加适合)。 文件输入流 在 Java 中文件输入流FileInputStream用于从文件中读取数据。FileInputStream 允许程序以字节为单位读取文件的内容。 创建方式 通常通过指定要读取的文件路径来创建文件输入流对象。例如 try {FileInputStream fis new FileInputStream(your_file_path);// 后续的读取操作 } catch (FileNotFoundException e) {e.printStackTrace(); } 但是这种方式需要处理各种可能的异常比如 FileNotFoundException 异常和 IOException 异常并且需要手动关闭文件完整代码如下 public class Hello_World {public static void main(String[] args) { // 想读取一个文件 创建一个文件输入流 使用完把流关闭掉 释放掉 closeFileInputStream stream null;try {stream new FileInputStream(绝对路径/相对路径); // stream.close();} catch (FileNotFoundException e) {throw new RuntimeException(e);} finally {if (stream ! null) {try {stream.close();} catch (IOException e) {throw new RuntimeException(e);}}}} } 仅仅是取得文件就如此费劲不合乎常理。所以有了try-with-resources 语句这种简便方式try-with-resources 语句是一种用于更方便、更安全地管理资源如输入流、输出流、数据库连接等的机制。 优点 自动资源管理无需显式地调用 close 方法来关闭资源避免了因忘记关闭资源而导致的资源泄漏问题。简洁的代码减少了样板代码使代码更简洁、更易读。 语法格式 try (Resource res new Resource()) {// 使用资源的操作 } catch (Exception e) {// 异常处理 } 对于以上示例的完整代码转成try-with-resources 语句如下 public class Hello_World {public static void main(String[] args) {try(FileInputStream inputStream new FileInputStream(路径)){ // 直接在try()中定义要在完成之后释放的资源} catch (IOException e){ // 这里变成IOException是因为调用close()可能会出现而FileNotFoundException是继承自IOException的e.printStackTrace();}// 无需再编写finally语句块因为在最后自动帮我们调用了close()。} } 由此可见try-with-resources 语句极大地提高了资源管理的便利性和可靠性使代码更加健壮和易于维护。 数据的传递 如图所示在计算机数据由文件向内存进行传递的形式是以二进制01串进行的一次一个字节就像水流一样源源不断的传输直至文件传输结束。 数据不断传输过来那我们如何去读取数据呢 调用read()方法是必要的但是read()方法的调用方式也有很多种这里主要列出来常见的三种。 1.直接读取 try(FileInputStream inputStream new FileInputStream(C:\\Users\\Xxy63\\Desktop\\无限弹窗代码.txt)){ // 直接在try()中定义要在完成之后释放的资源int i inputStream.read();System.out.println((char)i);int x inputStream.read(); // 当没有内容后会返回-1System.out.println((char)x);} catch (IOException e){ // 这里变成IOException是因为调用close()可能会出现而FileNotFoundException是继承自IOException的e.printStackTrace();}// 无需再编写finally语句块因为在最后自动帮我们调用了close()。 由于读取数据返回的是int类型的一个数据所以我们用int i 去接收它然后利用强制类型转换把i 转为char类型进行输出。调用一次读取一个字符当读取完之后会返回-1.这样效率较为低下所以有下面第二种读取方法。 2.循环读取 由于读取完之后会返回数字-1所以可以利用这一性质进行while循环进行读取直到返回-1时结束循环代码如下 try(FileInputStream inputStream new FileInputStream(C:\\Users\\Xxy63\\Desktop\\无限弹窗代码.txt)){ // 直接在try()中定义要在完成之后释放的资源int i;while ((i inputStream.read()) ! -1) {System.out.print((char)i);}} catch (IOException e){ // 这里变成IOException是因为调用close()可能会出现而FileNotFoundException是继承自IOException的e.printStackTrace(); }// 无需再编写finally语句块因为在最后自动帮我们调用了close()。 通过这种方式就可以一次性对文件内的内容全部读取。但是由于不够灵活可变性较差所以还可以用下面第三种方法进行读取。 3.区间读取 区间读取顾名思义就是定义一个固定长度的区间将文件内的内容按照这个区间大小进行读取当文件未读内容小于区间长度时会以小于区间长度的形式进行最后一次读取若没有元素可读取时一样会返回-1。具体代码如下 try(FileInputStream inputStream new FileInputStream(C:\\Users\\Xxy63\\Desktop\\无限弹窗代码.txt)){ // 直接在try()中定义要在完成之后释放的资源System.out.println(inputStream.available()); // 获取有多少个数据可读byte [] bytes new byte[inputStream.available()]; // 一次读x个数据while (inputStream.read(bytes) ! -1) // 当最后不足x个或者已经没有时会返回少于x个的数据或者-1System.out.println(new String(bytes));} catch (IOException e){ // 这里变成IOException是因为调用close()可能会出现而FileNotFoundException是继承自IOException的e.printStackTrace();}// 无需再编写finally语句块因为在最后自动帮我们调用了close()。 读取过程中可使用available()方法查询可读数量在上面的案例中我将区间长度x设置为了可读长度这样也可以一次性读取完文件内数据。也可以设置其他int类型的x作为长度参数。 这种方法在文件输出流常用一个字节一个字节的读取出来并一个字节一个字节的写入另一个文件相当于文件的拷贝操作。 跳过操作skip()方法。给skip(x)传人参数x可以设置跳过前几个字节进行读取其下一个字节。 文件输出流 文件输出流FileOutputStream用于将数据写入到文件中。文件输出流允许您以字节为单位向文件写入数据。 在写入之前您需要提供要写入的文件的路径和名称。如果文件不存在它将被创建如果文件已存在默认情况下新写入的数据会覆盖原有的内容。 try {FileOutputStream fos new FileOutputStream(your_file.txt);} catch (IOException e) {e.printStackTrace();} stream.flush()方法的主要作用是将输出流缓冲区中的数据强制刷新并输出。通常当我们使用输出流如 FileOutputStream 、BufferedOutputStream 等写入数据时数据并不是立即被发送到目的地如文件而是先被存储在缓冲区中。缓冲区的目的是减少实际的 I/O 操作次数从而提高性能。 然而在某些情况下我们希望确保数据能够立即被发送出去而不是等到缓冲区填满或者输出流被关闭。这时就可以使用 flush 方法。   默认情况下(append的参数默认是false)写入的内容会直接取代原文件内的内容即覆盖掉。代码如下 public class Hello_World {public static void main(String[] args) {try(FileOutputStream stream new FileOutputStream(C:\\Users\\Xxy63\\Desktop\\无限弹窗代码.txt)){stream.write(Hello World.getBytes()); // 直接取代原内容stream.flush();}catch (IOException e){e.printStackTrace();}} } 如果想接着文件的内容往后继续写(追加模式)那么只需要把append的参数改为true即可代码如下 public class Hello_World {public static void main(String[] args) {try(FileOutputStream stream new FileOutputStream(C:\\Users\\Xxy63\\Desktop\\无限弹窗代码.txt,true)){ // 加上true 变成追加模式stream.write(Hello World.getBytes()); // 直接取代原内容stream.flush();}catch (IOException e){e.printStackTrace();}} }至此我们就完成了输出流操作那么就可以结合输入流和输出流进行拷贝操作了。 文件的拷贝 文件拷贝是将一个文件的内容完整地复制到另一个文件的操作。相关的类有 import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException; 文件的拷贝操作一般使用读取数据的第三种方法区间读取。因为这种方法可以设置足够大的区间读取速度较快不需要一个字节一个字节的去读取。下面是两个拷贝的示例代码 // 文件拷贝进度条 public class Hello_World {public static void main(String[] args) {File file new File(C:\\Users\\Xxy63\\Desktop\\文章.md);try(FileInputStream in new FileInputStream(file);FileOutputStream out new FileOutputStream(XXX.txt)){byte [] bytes new byte[400];int len;long total file.length() , sum 0;while ((len in.read(bytes))!-1){out.write(bytes, 0, len);sum len;System.out.println(文件已拷贝 (sum*100/total) %);}}catch (IOException e){e.printStackTrace();}} } public class Hello_World {public static void main(String[] args) {try(FileInputStream in new FileInputStream(C:\\Users\\Xxy63\\Desktop\\无限弹窗代码.txt);FileOutputStream out new FileOutputStream(C:\\Users\\Xxy63\\Desktop\\copy.txt)){byte[] bytes new byte[1024];int len;while ((len in.read(bytes)) ! -1) {out.write(bytes, 0, len);} // 拷贝速度大大提升}catch (IOException e){e.printStackTrace();}} }在上述代码中通过创建输入流 FileInputStream 从源文件读取数据创建输出流 FileOutputStream 向目标文件写入数据。使用一个缓冲区来提高拷贝效率每次读取一定数量的字节到缓冲区然后将缓冲区中的数据写入目标文件直到读取完源文件的所有内容。 文件拷贝在很多场景中都很有用比如 数据备份将重要文件复制一份以防止数据丢失。共享文件将文件拷贝到多个位置以便不同的程序或用户使用。 例如如果您有一个包含重要配置信息的文件为了安全起见可以定期进行备份拷贝。又或者在一个文件处理系统中需要将原始文件拷贝到多个不同的目录下以供不同的模块处理。 “且将新火试新茶诗酒趁年华。”——《望江南·超然台作》
http://www.hkea.cn/news/14497786/

相关文章:

  • 杭州 高端网站定制安全教育平台登录入口
  • 淘宝网站做超链接网上开店创业
  • 红花岗区建设局网站廊坊网站建设方案策划
  • 怎么给企业做网站wordpress完整模板下载
  • 北京智能建站系统价格php apc缓存 wordpress
  • 网站设计预算WordPress女人网模板
  • 手机h5免费模板网站模板极客联盟网站建设公司怎么样
  • 大型网站流量中国建筑工程网施工组织设计
  • 湘潭做网站出色磐石网络app安装软件下载
  • 资讯网站怎么做招聘网页设计
  • 重庆高端品牌网站建设网站登录密码怎么取消保存
  • 个人房屋做民宿在哪个网站肇庆网站建设咨询
  • 禅城南庄网站制作深圳插画设计公司
  • 宣威市网站建设工艺品网站建设
  • 软文营销平台网络营销优化推广
  • 中国建设质量协会网站做网站的公司多少钱
  • 网站突然不被百度收录知名的网站设计公司
  • 企业自建网站 备案网站建设企业最新报价
  • 中国哪些网站做软装网站seo步骤
  • html5做网站的好处外贸是做什么的工作内容是什么
  • 中国三大门户网站是哪三个浦口建设局网站
  • 南京培训网站建设泰州做网站优化
  • 网站建设唯地带网站栏目划分的原则
  • 做简单网站的框架wordpress learnpress
  • 中文网站怎么做英文版WordPress注册不提示
  • 于都建设银行网站招聘wordpress手动更新
  • 哪家公司做网站便宜单页面视频网站
  • 做网站维护一工资多少钱安徽六安市地图
  • 电子商务网站建设评价论文免费行情软件在线网站
  • 网站功能建设中WordPress使用微博外链