黑马程序员java I/O系统1

黑马程序员入学Java知识——精华总结 黑马程序员入学Java知识——精华总结   J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结!   一、黑马程序员—java概述与基础知识 6 1、何为编程? 6 2、Java语言概述,历史、特点 6 3、什么是跨平台性?原理是什么?JVM 7 4、Jre和Jdk的区别? 7 5、java虚拟机JVM 8 6、 Java程序运行机制 8 7 阅读详情

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

黑马程序员java I/O系统1

File类的对象,表示了磁盘上的文件或目录,提供了与平台无关的方法来对磁盘上的文件或目录操作。File类描述了文件本身的属性,用来获取或处理磁盘文件相关的信息,例如权限,时间,日期和目录路径。File类还可以浏览子目录层次结构。目录管理的主要方法为:mkdir()根据抽象路径名创建目录;list()返回抽象路径名表示路径中的文件名和目录名。File类定义了一些常用方法,例如createNewFile()在指定位置创建文件,如果该文件已经存在,则不创建,返回false,getName()返回文件名,isDirectory()判断是否是目录,exists()在文件存在的情况下返回true,反之返回false,length()返回由此抽象路径名表示的文件的长度,delete()删除此抽象路径名表示的文件或目录,等等。使用FilenameFilter能够限制由list()方法返回的文件数目,使它返回那些与一定的文件名方式或者过滤相匹配的文件。

import java.io.File;

import java.io.IOException;

publicclass FileTest1 {

    publicstaticvoid main(String[] args)

    {

       File file = new File("c:\\abc.txt");

       File file2 = new File("c:/abc", "xyz/hello.txt");

       try

       {

           System.out.println(file.createNewFile());

           System.out.println(file2.createNewFile());

       }

       catch (IOException e)

       {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

        File file3 = new File("c:/abc/xyz/hello");

      

       System.out.println(file.mkdirs());

      

       System.out.println(file.isFile());

        File[] files = file3.listFiles();

      

       for(File f : files)

       {

           System.out.println(f.getName());

           System.out.println(f.getParent());

       }

    }

}

 

在java.io包中提供了大量的类(流)。从功能上分为两大类:输入流和输出流。从流结构上分为字节流和字符流。字节流的输入流和输出流基础是InputStream和OutputStream这两个抽象类,字节流的输入输出操作由这两个类的子类实现。字符流输入输入输出的基础是抽象类Reader和Writer。但在最底层,所有的输入/输出都是字节形式的。基于字符的流只为处理字符提供方便有效的方法。

读数据的逻辑是:

1.       打开一个流

2.       循环如果还有更多数据

3.       读取数据

4.       关闭这个流

写数据的逻辑是:

1.       打开一个流

2.       循环如果还有更多数据

3.       写入数据

4.       关闭这个流

抽象类InputStream和OutputStream定义了实现其他流类的关键方法。最重要的两个方法时read()和write(),它们分别对数据的字节进行读写。InputStream类子类对象自然也继承了InputStream类的方法。常用的方法有:读数据的方法read(),获取输入流字节数的方法available(),定位输入位置指针的方法skip(),reset(),mark()等。OutputStream类子类对象也继承了OutputStream类的方法。常用的方法有:写数据的方法write(),关闭流方法close(),刷新输出流方法flush()等。

过滤流的主要特点是在输入输出数据的同时能对所传输的数据做指定类型或格式的转换,即可实现对二进制字节数据的理解和编码转换,并且提供了同步机制。类FilterInputStream和FilterOutputStream分别作为所有过滤输入流和输出流的父类。过滤流需要使用已经存在的节点流来构造。

Java提供了一系列的读写文件的类和方法。两个最常用的流类是FileInputStream和FileOutputStream,它们生成与文件链接的字节流。为打开文件,你只需创建这些类中某一个类的一个对象,在构造方法中以参数形式指定文件的名称。当你对文件的操作结束后,要调用close()来关闭流。FileInputStream类创建一个能从文件读取字节的InputStream类。读取文件使用read()方法,它从文件中读取一个字节并将该字节以整数形式返回。当读到文件尾时,返回-1。FileOutputStream创建了一个可以向文件写入字节的类OutputStream,它的创建不依赖于文件是否存在。在创建对象时FileOutputStream在打开输出文件之前创建它。向文件写数据,需用write(int b)方法,但仅低8位字节可以写入文件。

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

publicclass Test4 {

    publicstaticvoid main(String[] args) throws IOException

    {

       readFile_1();

       readFile_2();

       writeFile();

    }

 

    publicstaticvoid readFile_1()throws IOException

    {

       FileInputStream fis = new FileInputStream("fos.txt");

 

       byte[] buf = newbyte[1024];

       int len = 0;

       while((len=fis.read(buf))!=-1)

       {

           System.out.println(new String(buf,0,len));

       }

 

       fis.close(); 

    }

    publicstaticvoid readFile_2()throws IOException

    {

       FileInputStream fis = new FileInputStream("fos.txt");

 

       int ch = 0;

 

       while((ch=fis.read())!=-1)

       {

           System.out.println((char)ch);

       }

 

       fis.close();

    }

 

    publicstaticvoid writeFile()throws IOException

    {

       FileOutputStream fos = new FileOutputStream("fos.txt");

      

       fos.write("abcde".getBytes());

 

       fos.close(); 

    }

}

ByteArrayInputStream是把字节数组当成源的输入流。该类有两个构造方法,每个构造方法需要一个字节数组提供数据源:ByteArrayInputStream(byte array[])和ByteArrayInputStream(byte array[],int start,int numBytes)。第二个构造方法创建了一个InputStream类,该类从字节数组的子集生成,以start指定索引的字符为起点,长度由numBytes决定。

package com.heima.exam;

 

import java.io.ByteArrayInputStream;

 

publicclass ByteArrayInputStreamTest

{

    publicstaticvoid main(String[] args)

    {

       String temp = "abc";

      

       byte[] b = temp.getBytes();

      

       ByteArrayInputStream in = new ByteArrayInputStream(b);

      

       for(int i = 0; i < 2; i++)

       {

           int c;

          

           while(-1 != (c = in.read()))

           {

              if(0 == i)

              {

                  System.out.println((char)c);

              }

              else

              {

                  System.out.println(Character.toUpperCase((char)c));

              }

           }

                 

           System.out.println();

          

           in.reset();

       }

    }

}

 

ByteArrayOutputStream是一个把字节数组当作输出流的实现。它有两个构造方法:ByteArrayOutputStream()和ByteArrayOutputStream(int numBytes)。在第一种形式中,一个32位字节的缓冲区被生成。第二个构造方法生成一个numByets大小的缓冲区。因为这两个流对象都操作的数组,并没有使用系统资源。所以,不用进行close关闭。

package com.heima.exam;

 

import java.io.ByteArrayOutputStream;

import java.io.FileOutputStream;

import java.io.OutputStream;

 

publicclass ByteArrayOutputStreamTest

{

    publicstaticvoid main(String[] args) throws Exception

    {

       ByteArrayOutputStream f = new ByteArrayOutputStream();

      

       String str = "hello world welcome";

      

       byte[] buffer = str.getBytes();

      

       f.write(buffer);

      

       byte[] result = f.toByteArray();

      

       for(int i = 0; i < result.length; i++)

       {

           System.out.println((char)result[i]);

       }

 

       OutputStream os = new FileOutputStream("d:\\test.txt");

      

       f.writeTo(os);

      

       f.close();

       os.close();

    }

}

 

通俗理解Xgboost 为了简化计算,XGBoost采用了一阶导数(梯度)和二阶导数(Hessian)来近似损失函数的变化,从而推导出叶子节点值的更新公式。其中 z 就是所有树的叶子节点分数之和。通过这两个正则化项,XGBoost能够在优化目标函数时,不仅考虑损失函数的最小化,还考虑了模型的复杂度,从而达到更好的泛化性能。正则化项通常包括两个部分:一个是与叶子节点数量相关的项,另一个是与叶子节点输出值大小相关的项。通过这种方式,XGBoost能够有效地计算出每个叶子节点的值,同时通过正则化项来平衡模型的复杂度和泛化能力。 阅读详情

相关推荐

Windows10系统添加虚拟网卡(Microsoft Loopback Adapter)的方法

1、按下win + R键,在其中输入:hdwwiz,然后 (enter) 2、点击下一步即可 3、其次选择【网络适配器】,然后点击【下一步】。 4、在厂商处选择Microsoft,网络适配器处选择【Microsoft Loopback Adapter】选项 ,点击【下一步】。 5、通过上面几个步骤的设置后,一块虚拟网卡的安装设置就算是完成了。 ...

一个懒鬼的博客 2万+

Java的IO流---File类的使用

File类的概述 java.io.File类 凡是与输入、输出相关的类、接口等都定义在java.io包下 File是一个类,可以有构造器创建其对象。此对象对应着一个文件或者文件目录 File类对象是与平台无关的 File中的方法,仅涉及到如何创建、删除、重命名等等。只要涉及到文件内容的,File是无能为力的,必须由io流来完成 File类的对象常作为io流的具体类的构造器的形参 代码实现 import java.io.File; public class TestFile { public s

qq_44961869的博客 1155

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 284

一道JAVA面试题

今天看到论坛有人发的java的一道面试题目   已知一个int数组,编程测试该数组中的数字能否组成一串连续的数字,可以重复。 比如a[] = {2,1,3,5,5,4}可以组成连续的数字【1,2,3,4,5】。 我对这个程序做了两种方法: import java.util.*; public class Test1 { public static void main(String[

流氓兔斯基 1147

Perplexity AI 高效使用培训手册

Perplexity AI 是一款革命性的 AI 搜索引擎,提供免费版和专业版两种选择。免费版支持基础搜索、每日3次Pro搜索、3个文件上传和初步深度研究功能;Pro版则解锁无限次Pro搜索、无限制文件上传、AI图像生成等高级功能,适合专业用户深度研究。该工具能整合网络信息、分析本地文档、生成创意内容,并提供知识库管理功能,显著提升信息检索和内容创作效率。用户可根据需求选择合适版本,免费版已能满足日常使用,而Pro版则更适合专业场景。

conquer_qgw的博客 1206

手把手教你用FreeModbus RTU协议栈实现STM32与PLC通信(附Keil工程)

本文详细介绍了如何使用FreeModbus RTU协议栈在STM32上实现与PLC的工业通信。从环境搭建、工程配置到关键移植接口实现,提供了Keil工程模板和调试技巧,帮助开发者快速掌握Modbus RTU通信技术,适用于工业自动化领域的设备间通信需求。

weixin_42549037的博客 418

public static void main(String args[])什么意思?

  public static void main(String[] args)   这绝对不是凭空想出来的,也不是没有道理的死规定,而是java程序执行的需要。   jvm在试图运行一个类之前,先检查该类是否包含一个特殊方法。这个方法必须是公有的,以便在任何位置都能访问得到。这个方法必须是static的,因为这个方法不能依赖任何该类的实例即可运行,而非static的方法,在运行之前要先创建该...

weixin_33675507的博客 1046

GEE土地分类:基于sentinel-2的ResNet深度学习模型的土地分类

本文提出了一种基于深度学习的土地覆盖分类方法,通过集成Google Earth Engine和PyTorch框架实现自动化监测系统。技术方案包括:1) 使用Sentinel-2和Landsat-8卫星影像作为数据源,结合EuroSAT标准数据集;2) 采用ResNet50和U-Net构建深度学习模型;3) 建立端到端处理流程,包含数据预处理、模型训练和评估体系。实验结果表明,该方法在EuroSAT数据集上达到90%的分类准确率,成功应用于农作物监测、城市扩张分析等场景。系统配置基于Python 3.8+环境

此星光明博客 372

Spring中的Bean配置(一)

Spring中的bean配置 1.IOC和DI 1.IOC(Inversion of Control):其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源, 作为回应,容器适时的返回资源,而应用了IOC之后,则是容器主动的将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源。这种行为也被成为查找的被动形式 2.DI(Dependency Injection)- IOC的另一种表述方式,即组件以一些预先定义好的方式(例如:setter方法) 接受来自如容器的资

weixin_46055386的博客 623

LeetCode 热题 100 回顾

力扣最受刷题发烧友欢迎的 100 道题 LeetCode 热题 100 : 题目回顾、解题思路、复杂度分析、代码实现、验证算法

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 9万+

机器人控制算法九之 位姿描述与空间变换

机器人控制算法九之 位姿描述与空间变换

yohnyang的博客 1032

别再让Postman、Swagger、Mock.js和JMeter打架了!Apifox一站式搞定API协作的保姆级实践

本文详细介绍了Apifox如何作为一站式解决方案,解决传统API工具链中的协作困境。通过数据同源架构、可视化协作界面和智能自动化引擎,Apifox显著提升团队效率,减少沟通成本,并缩短迭代周期。适用于开发、测试和产品经理等多角色协作,是企业级API管理的理想选择。

weixin_30703911的博客 276

K230在原有LVGL控件触摸屏控制的基础上,增加USB鼠标控制!

搭配CanMV图形化编程,中小学生可快速开发“键鼠控制AI小游戏”“智能画板”等趣味项目,降低AI学习门槛;:HDMI屏幕+键鼠组合,直接在开发板上调试代码、修改ISP参数、查看AI推理日志,无需频繁连接电脑;:打造带交互的AI设备(如工业控制面板、智能显示器),鼠标操作菜单、键盘输入指令,体验媲美小型PC;:无网络场景下,通过键盘直接向AI设备录入数据、配置参数,适配野外监测、本地工控等场景。,自动识别、快速响应,完美适配交互控制、参数调试、数据输入等场景。

weixin_47446386的博客 146

《Java基础入门第2版》--黑马程序员 课后答案及其详解 第7章 I/O流

文章目录一、填空题二、判断题三、选择题四、简答题五、编程题六、原题及其解析 一、填空题 1、 字节流、字符流 2、 Channel、Buffer 3、 InputStreamReader、OutputStreamWriter 4、 Buffer、Channel、Selector 5、RandomAccesseFile 二、判断题 1、 错 2、对 3、对 4、对 5、错 三、选择题 1、AB 2、C 3、AB 4、A 5、B 四、简答题 1、Java程序通过I/O流来完成输

hypertext123的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

黑马程序员——Java I/O系统

流,file

332

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

黑马程序员-java基础——I/O

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com

dsw00523的专栏 348

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

黑马程序员-04-I/O技术

黑马程序员-04-I/O技术                                                          ------- android培训、java培训、期待与您交流! ---------- /*                                                                

313

黑马程序员_输入输出流(I/O)

输入输出流(I/O)     流(Stream)     在java API中,可以从其中读入一个字节序列的对象称做输入流,而可以向其中写入一个字节序列的对象称做输出流。这些字节序列的来源地和目的地可以是文件,而且通常都是文件,但是也可以是网络连接,甚至是内存块。抽象类InputStream和OutputStream构成了有层次结构的输入/输出(I/O)类的基础。     因为面向字节的流不

zhengylsc的专栏 1080

黑马程序员 第五篇 Java I/O (foundation, completed)

Java I/O 详解 foundation

Das20pct的博客 658

黑马程序员—I/O

------- android培训、java培训、期待与您交流! ---------- 1,File类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容,File类定义了一些与平台无关的方法来操纵文件,例如:创建、删除文件和重命名文件,Java中的目录被当作一种特殊的文件使用,list方法可以返回目录中的所有目录和文件名。在Unix下的路径分隔符为(/),在Dos下的路径分隔符为(\),

Andy的乐园 1539

黑马程序员——java基础---I/O流

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、I/O流概述   概念:I/O流用来处理设备之间的数据传输。Java对数据的操作是通过流的方式,而操作流的对象都放在IO包中。   分类:     按操作数据分为:字符流与字节流。     按流向分为:输入流与输出流。    IO流常用基类:   ...

Sa916487698的博客 324

黑马程序员Java I/O系统2

------- android培训、java培训、期待与您交流! ---------- 黑马程序员Java I/O系统2 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。 若处理的数据量较多,为避免每个字节的读写都对流进行,可以使用过滤流类的子类缓冲流。缓冲流建立一个内部缓冲区,输入输出数据先读写到缓冲区中

lamstudyingnet的专栏 564

《Java基础入门》第三版--黑马程序员课后习题(编程部分)

Java基础入门第三版——黑马练习题 第 1 章 Java 开发入门,第 2 章 Java 编程基础,第 3 章 面向对象(上) ,第 4 章 面向对象(下),第 5 章 异常 ,第 6 章 Java API ,第 7 章 集合类,第 8 章 泛型,第 9 章 反射,第 10 章 IO(输入输出) ,第 11 章 JDBC,第 12 章 多线程,第 13 章 网络编程

WZY22502701的博客 1万+

黑马程序员_Java I/O 技术

------- android培训、java培训、期待与您交流! ---------- 输入/输出处理是程序设计中非常重要的一部分,比如从键盘读取数据、从文件中读取数据或向文件中写数据等等。Java把这些不同类型的输入、输出源抽象为流(stream),用统一接口来表示,从而使程序简单明了。 Jdk 提供了包java.io,其中包括一系列的类来实现输入/输出处理。进行I/O操作时可能会产

QQ153194574的专栏 620

黑马程序员 总结(十七)——I/O流(一)

------- android培训、java培训、期待与您交流! ---------- I/O流 程序在执行时通常要和外部进行交互,从外部读取数据或向外部设备发送数据,这就是所谓的I/O。Java使用抽象概念——流(stream)来描述程序与数据发送或者接收的通道。I/O流有不同的分类,按照流的方向分为输入流和输出流。按照操作的数据分为字节流和字符流。在I/O流中有四个基本抽象类,字节流2个,

heshiyingx的专栏 824

黑马程序员———I/O流

《黑马程序员》 ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- I/Oliu ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

Jon_Jesse的专栏 621
上一篇: 黑马程序员线程
下一篇: 黑马程序员Java I/O系统2
lamstudyingnet
博客等级 码龄15年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值