当前位置: 网站首页>小程序开发>网站制作

澧县网络公司哪家好【澧县企业网站百度SEO推广公司】澧县做网站开发价格、澧县淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、澧县高端企业网站页面制作设计专业公司需要多少钱

发表日期: 2021-03-27 09:40:54 浏览次数:105

澧县网络公司哪家好【澧县企业网站百度SEO推广公司】澧县做网站开发价格、澧县淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、澧县高端企业网站页面制作设计专业公司需要多少钱

澧县,隶属于湖南省常德市,因澧水贯穿全境而得名,位于长江中游,湖南省西北部,洞庭湖西岸,与长江直线距离80公里。梁敬帝绍泰元年(555)始置澧州。隋开皇九年(公元589年)罢天门郡,置澧州,新置澧阳县。2015年,全县辖4个街道、15个镇,境内气候适宜,地貌多样,水面广大。澧县拥有澧阳平原(湖南省最大的平原)绝大部分,面积2107.3平方公里。粮、棉、油、猪、鱼是澧县五大农业支柱产品。

澧县是全国商品粮基地县、全国优质棉基地县、全国油菜生产百强县、国家农业可持续发展实验示范区、全国葡萄标准化栽培示范基地、国家新型城镇化综合改革试点县、国家中小城市综合改革试点县、国家卫生县城、中华诗词之乡、湖南省文明县城、湖南省园林县城、湖南省经济强县、湖南省全面小康”十快进县”。 [1]  有国家级文物保护单位13处,以城头山、彭头山、鸡叫城、八十垱、十里岗、丁家岗为核心的澧阳平原史前文化遗址群已由国家向联合国申请世界文化遗产,其中城头山古文化遗址发现了中国最早的、距今6000年的古城址、古祭坛和古稻田。2015年被列为第二批国家新型城镇化综合试点地区。 [2] 

第一批国家农业可持续发展试验示范区。 [3-4]  2019年12月31日,入选全国农村创新创业典型县。 [5]  2021年1月29日,入选湖南省人民政府公布的2020年度真抓实干成效明显的地区名单。

16.3 字节流

上一节总体概述了Java中I/O流层次结构技术,本节详细介绍一下字节流的API。掌握字节流的API先要熟悉它的两个抽象类:InputStream 和OutputStream,了解它们有哪些主要的方法。

16.3.1 InputStream抽象类

InputStream是字节输入流的根类,它定义了很多方法,影响着字节输入流的行为。下面详细介绍一下。

InputStream主要方法如下:

  • int read():读取一个字节,返回0到255范围内的int字节值。如果因为已经到达流末尾,而且没有可用的字节,则返回值-1。

  • int read(byte b[] ):读取多个字节,数据放到字节数组b中,返回值为实际读取的字节的数量,如果已经到达流末尾,而且没有可用的字节,则返回值-1。

  • int read(byte b[ ], int off, int len):最多读取len个字节,数据放到以下标off开始字节数组b中,将读取的第一个字节存储在元素b[off]中,下一个存储在b[off+1]中,依次类推。返回值为实际读取的字节的数量,如果已经到达流末尾,而且没有可用的字节,则返回值-1。

  • void close():流操作完毕后必须关闭。

上述所有方法都可能会抛出IOException,因此使用时要注意处理异常。

16.3.2 OutputStream抽象类

OutputStream是字节输出流的根类,它定义了很多方法,影响着字节输出流的行为。下面详细介绍一下。

OutputStream主要方法如下:

  • void write(int b):将b写入到输出流,b是int类型占有32位,写入过程是写入b 的8个低位,b的24个高位将被忽略。

  • void write(byte b[ ]):将b.length个字节从指定字节数组b写入到输出流。

  • void write(byte b[ ], int off, int len):把字节数组b中从下标off开始,长度为len的字节写入到输出流。

  • void flush():刷空输出流,并输出所有被缓存的字节。由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。

  • void close( ):流操作完毕后必须关闭。

上述所有方法都声明抛出IOException,因此使用时要注意处理异常。

注意 流(包括输入流和输出流)所占用的资源,不能通过JVM的垃圾收集器回收,需要程序员自己释放。一种方法是可以在finally代码块调用close()方法关闭流,释放流所占用的资源。另一种方法通过自动资源管理技术管理这些流,流(包括输入流和输出流)都实现了AutoCloseable接口,可以使用自动资源管理技术,具体内容参考14.4.2节。

16.3.3 案例:文件复制

前面介绍了两种字节流常用的方法,下面通过一个案例熟悉一下它们的使用,该案例实现了文件复制,数据源是文件,所以会用到文件输入流FileInputStream,数据目的地也是文件,所以会用到文件输出流FileOutputStream。

FileInputStream和FileOutputStream中主要方法都是继承自InputStream和OutputStream前面两个节已经详细介绍了,这里不再赘述。下面介绍一下它们的构造方法,FileInputStream构造方法主要有:

  • FileInputStream(String name):创建FileInputStream对象,name是文件名。如果文件不存在则抛出FileNotFoundException异常。

  • FileInputStream(File file):通过File对象创建FileInputStream对象。如果文件不存在则抛出FileNotFoundException异常。

FileOutputStream构造方法主要有:

  • FileOutputStream(String name):通过指定name文件名创建FileOutputStream对象。如果name文件存在,但如果是一个目录或文件无法打开则抛出FileNotFoundException异常。

  • FileOutputStream(String name, boolean append):通过指定name文件名创建FileOutputStream对象,append参数如果为 true,则将字节写入文件末尾处,而不是写入文件开始处。如果name文件存在,但如果是一个目录或文件无法打开则抛出FileNotFoundException异常。

  • FileOutputStream(File file):通过File对象创建FileOutputStream对象。如果file文件存在,但如果是一个目录或文件无法打开则抛出FileNotFoundException异常。

  • FileOutputStream(File file, boolean append):通过File对象创建FileOutputStream对象,append参数如果为 true,则将字节写入文件末尾处,而不是写入文件开始处。如果file文件存在,但如果是一个目录或文件无法打开则抛出FileNotFoundException异常。

下面介绍如果将./TestDir/build.txt文件内容复制到./TestDir/subDir/build.txt。./TestDir/build.txt文件内容是AI-162.3764568,实现代码如下:

     //FileCopy.java文件
     package com.a51work6;

     import java.io.FileInputStream;
     import java.io.FileNotFoundException;
     import java.io.FileOutputStream;
     import java.io.IOException;

     public class FileCopy {

         public static void main(String[] args) {

             try (FileInputStream in = new FileInputStream("./TestDir/build.txt");
                     FileOutputStream out = new FileOutputStream("./TestDir/subDir/build.txt")) {    ①

                 // 准备一个缓冲区
                 byte[] buffer = new byte[10];              ②
                 // 首先读取一次
                 int len = in.read(buffer);                 ③

                 while (len != -1) {                        ④
                     String copyStr = new String(buffer);   ⑤
                     // 打印复制的字符串
                     System.out.println(copyStr);
                     // 开始写入数据
                     out.write(buffer, 0, len);             ⑥
                     // 再读取一次
                     len = in.read(buffer);                 ⑦
                 }

             } catch (FileNotFoundException e) {
                 e.printStackTrace();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     }复制代码

控制台输出结果:

     AI-162.376
     456862.376复制代码

上述代码第①行创建FileInputStream和FileOutputStream对象,这是自动资源管理的写法,不需要自己关闭流。

第②行代码是准备一个缓冲区,它是字节数组,读取输入流的数据保存到缓冲区中,然后将缓冲区中的数据再写入到输出流中。

提示 缓冲区大小(字节数组长度)多少合适?缓冲区大小决定了一次读写操作的最多字节数,缓冲区设置的很小,会进行多次读写操作才能完成。所以如果当前计算机内存足够大,而不影响其它应用运行情况下,当然缓冲区是越大越好。本例中缓冲区大小设置的10,源文件中内容是AI-162.3764568,共有14个字符,由于这些字符都属于ASCII字符,因此14个字符需要14字节描述,需要读写两次才能完成复制。

代码第③行是第一次从输入流中读取数据,数据保存到buffer中,len是实际读取的字节数。代码第⑦行也从输入流中读取数据。由于本例中缓冲区大小设置为10,因此这两次读取数据会把数据读完,第一次读了10个字节,第二次读了4个字节。

代码第④行是判断读取的字节数len是否等于-1,代码第⑦行的len = in.read(buffer)事实上执行了两次,第一次执行时len为4,第二次执行时len为-1。

代码第⑤行是使用字节数组构造字符串,然后通过System.out.println(copyStr)语句将字符串输出到控制台。从输出的结果看输出了两次,每次10个字节,第一次输出结果AI-162.376容易理解,它是AI-162.3764568的前10个字符;那么第二次输出的结果456862.376令人匪夷所思,事实上前4个字符(4568)是第二次读取的,后面的6个字符(62.376)是上一次读取的。两次读取内容如图16-7所示。

{%}

图16-7 文件读取示意图

代码第⑥行out.write(buffer, 0, len)是向输出流写入数据,与读取数据对应,数据写入也调用了两次,第一次len为10,将缓冲区buffer所有元素全部写入输出流;第二次len为4,将缓冲区buffer所有前4个元素写入输出流。注意这里不要使用void write(byte b[ ])方法,因为它没法控制第二次写入的字节数。

上面的案例由于使用了字节输入输出流,所以不仅可以复制文本文件,还可以复制二进制文件。


澧县网络公司哪家好澧县企业网站百度SEO推广公司澧县做网站开发价格、澧县淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、澧县高端企业网站页面制作设计专业公司需要多少钱


400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878