`
1enny
  • 浏览: 70379 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

IO流(一) 待续....

 
阅读更多
在学习中总结的知识点,希望被吐槽,只有这样才能发现问题和不足 。。。

system:不能被实例化类(说明里面的是静态成员),描述系统的相关信息
out:标准输出,默认是控制台
in: 标准输入,默认是键盘
获取/设置系统属性信息,Properties getProperties()/setProperties()
//因为Properties是maptable的子类,也就是map集合的子类对像。
//那么可以通过map方法取出该集合的元素。该集合存储的都是字符串数据。
可以在jvm启动时可以动态加载一些属性信息:在doc中 java -D 键值 文件

Runtime:每个 Java 应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。
可以通过getRuntime方法获取当前对象。

eg : Runtime r = Runtime.getRuntime();
Process p = r.exec("qq.exe");
p.destory();

Date :日期 Calendar

重点:IO流

1. 字符流基于字节流
2. OI的类名特点是:流的功能_流的父类名
3. 创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的对象。
而且该文件会在指定目录下,如果该目录下有同名文件将会被覆盖。
其实该步骤就是在明确数据要存放的目的地。
FileWriter file = new FileWriter("c:\demo.txt");
file.write("aaaa");
fw.flush();
//关闭流资源,但是关闭之前会刷新缓冲区的数据到目的地中。
//和flush的区别在于flush刷新,流还可以继续使用。close将会关闭流。
fw.close();

4. IO流异常处理
packagexyxysjxy.io;

importjava.io.FileWriter;
importjava.io.IOException;

publicclassIOExceptionTest {
publicstaticvoidmain(String[] args) {
FileWriter fw =null;
try{
//并且在已有的文件的末尾处进行数据续写.
fw =newFileWriter("demo.txt",true);
//window中换行需要\r\n,而linux是\n
fw.write("qwerr\r\n");
}catch(IOException e) {
e.printStackTrace();
}finally{
try{
if(fw !=null)
fw.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}

6. 文件的读
//创建一个文件读取流对象,和指定名称的文件相关联。
//要保证该文件是已经存在的,如果不存在就会抛出FileNotFoundException
FileReader fr = new FileReader("demo.txt");
//调用读取流对象的read方法,一个一个的读字符,而且会自动的往下读,返回整型,读到末尾返回-1
两种方式:
1. 一个接着一个的读取单个字符:
fr =newFileReader("f:\\demo.txt");
fr.read();
intnum= 0;
while((num= fr.read()) != -1)
System.out.println((char)num);
2.把数据读入到一个字符组中去
fr =newFileReader("f:\\demo.txt");
intnum= 0;
char[] arr =newchar[1024];
//读到最后或者所给的缓冲区装不下了就会返回读的数目,
//但是假如读到了文件最后的还读的话就返回-1。
//假如文件没有读完而是缓冲区不够空间的话再读就会覆盖缓冲区的已存在的字符数据
while((num= fr.read(arr)) != -1)
// 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
System.out.println(newString(arr, 0,num));

7. 拷贝文本文件中数据到某一个目录下的文件中
packagexyxysjxy.io;

importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;

publicclassFileCopy {

publicstaticvoidmain(String[] args) {
copy_1();
}

publicstaticvoidcopy_1() {
FileReader fr =null;
FileWriter fw =null;
try{
fr =newFileReader("f:\\copyfrom.txt");
fw =newFileWriter("f:\\copyto.txt");
// 单个字符的读取
//intc = 0;
// while ((c = fr.read()) != -1) {
// fw.write(c);
// }
char[] arr =newchar[1024];
intlen = 0;
while((len = fr.read(arr)) != -1) {
fw.write(arr, 0, len);
}
System.out.println("已经写完了!!!!!");
}catch(IOException e) {
thrownewRuntimeException();
}finally{
if(fw !=null)
try{
fw.close();
}catch(IOException e) {
e.printStackTrace();
}finally{
if(fr !=null)
try{
fr.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}

}


缓冲区的出现是为了提高流的操作效率而出现的。
所以创建缓冲区之前,必须先要有流对象。
bufferReafer 和 bufferWriter
publicstaticvoidtestBufferReaderWriter() {
FileReader fr =null;
BufferedReader br =null;
FileWriter fw =null;
BufferedWriter bw =null;
try{
// 创建一个字符输出输入流流对象
fr =newFileReader("f:\\bufferwriter.txt");
fw =newFileWriter("f:\\bufferwriterreader.txt");
// 为了提高字符输出效率,加入一个缓冲技术
// 只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可
br =newBufferedReader(fr);
bw =newBufferedWriter(fw);

String s =null;
// 在读数据的时候并不会把行终结符一起读取,
// 缓冲区提供了读取一行的方法readLine();读到了末尾返回null
while((s = br.readLine()) !=null) {
bw.write(s);
// 缓冲区提供了一个跨平台的换行符 newLine()
bw.newLine();
// 记住:只要用到了缓冲区,就要记得刷新
bw.flush();
}
System.out.println("通过缓冲区成功写入数据");
}catch(IOException e) {
thrownewRuntimeException("没有写成功!!");
}finally{
try{
if(br !=null)
br.close();
}catch(IOException e) {
e.printStackTrace();

}finally{
if(bw !=null)
try{
bw.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}

装饰设计模式:
当想要对已有的对象进行功能增强时,
可以定义类,将已有的对象传入,基于已有的功能,并提供加强功能
那么就自定义的该类称之为装饰类

// 通过源码,你会发现其实bufferreader也是通过fileReader的read
// 方法一个一个字符的读数据,只是在里面定义了一个字符数组来作为缓冲的效果


classMyBufferReader {
privateFileReaderfr;

publicMyBufferReader(FileReader fr) {
this.fr= fr;
}

publicString myReaderLine()throwsIOException {
StringBuilder sb =newStringBuilder();
intc = 0;
while((c =fr.read()) != -1) {
if(c =='\r')
continue;
if(c =='\n')
returnsb.toString();
sb.append((char)c);
}
if(sb.length() != 0)
//默认toString()转换的是空字符不是null
sb.toString();
returnnull;
}

publicvoidclose()throwsIOException {
fr.close();
}

}

继承和装饰的区别:


分享到:
评论

相关推荐

    node-v12.14.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于使用microPython的开发单片机设计源码.zip

    我们在单片机开发中常会遇到需要将UTF-8转换为GBK编码的需求。在了解各种编码格式的情况下可知, UFT-8不能直接转成GBK,需中转成unicode再转换为gbk。而unicode和gbk之间没有算法可以直接计算,需要查表方式获取。 网上有一些C语言实现的代码,我这里分享一种microPython的实现代码 接下来就是要考虑表的存储方式了,刚开始我想着把表存到代码里直接通过索引实现编码转换。但是gb2312有七千多个字符全部存储要耗费很大内存,即使是32位的esp32也只有512k的内存,加上其他资源的消耗,剩余的内存不足以存储编码转换表。 于是只能将表保存成一个文件(转化成bin文件会比较好,方法类似),通过读写文件来减少内存开销。 具体的查表就是简单的二分法

    基于VB实现的车队综合业务管理系统(论文+源代码)

    基于VB实现的车队综合业务管理系统(论文+源代码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    基于知识图谱的推荐算法-NCFG的实现python源码+运行说明.zip

    基于知识图谱的推荐算法-NCFG的实现 运行环境 python == 3.7.0 torch == 1.12.0 pandas == 1.1.5 numpy == 1.21.6 sklearn == 0.0 数据集介绍 music-音乐 book-书籍 ml-电影 yelp-商户 文件介绍 ratings.txt:记录用户点击的项目,1代表点击了,0代表没有点击 kg.txt:知识图谱文件,第一列是头实体,第二列是尾实体,第三列是关系 user-list.txt:用户及其id文件,第一列是用户的id,第二列是用户 其余文件可忽略

    JAVA002打飞机游戏设计(程序+设计说明书).zip

    JAVA002打飞机游戏设计(程序+设计说明书).zip

    Engineering-Electromagnetic-Theory-Lab-3.pdf

    Engineering_Electromagnetic_Theory_Lab_3.pdf

    自己弄的基于matlab实现的多端直流配电网的仿真模型,是支撑自己小论文的东东 仿真环境是用的matlab

    自己弄的基于matlab实现的多端直流配电网的仿真模型,是支撑自己小论文的东东。仿真环境是用的matlab。

    BBR、A2O、MBR工艺比选.doc

    课程设计,污水处理设计方案

    DHT11温湿度传感器是一款高性能、低成本的数字温湿度复合传感器 它集成了温度感应和湿度感应功能,可以准确地测量环境中的温度和湿

    DHT11温湿度传感器是一款高性能、低成本的数字温湿度复合传感器。它集成了温度感应和湿度感应功能,可以准确地测量环境中的温度和湿度,并通过数字信号输出数据。以下是关于DHT11温湿度传感器的详细介绍: DHT11传感器内部包含一个NTC热敏电阻用于温度测量和一个薄膜电容湿度传感材料用于湿度测量。NTC热敏电阻的电阻值会随着温度的变化而变化,DHT11通过测量电阻值的变化来计算环境的温度。而薄膜电容湿度传感材料的电容值则会随着湿度的变化而变化,DHT11通过测量电容值的变化来计算环境的湿度。 DHT11传感器具有高精度、高可靠性和稳定性好的特点。其湿度测量范围为20%RH至90%RH,精度可达±5%RH;温度测量范围为-20℃至+60℃,精度可达±2℃。传感器的工作电压范围为3.3V至5.5V,工作电流较小,功耗低。此外,DHT11传感器还具有超长的信号传输距离和超强的抗干扰能力,可以在复杂的环境中稳定工作。 DHT11传感器采用单总线数字信号传输方式,通过单个引脚进行数据输入和输出。它使用特定的时序信号来传输温度和湿度数据,主机可以通过解析这些时序信号来获取温度和湿度的数值。这种

    某钢厂转炉浊环供水泵站给排水竣工图.zip

    污水处理

    delphi家庭财务管理系统.zip

    delphi家庭财务管理系统.zip

    node-v10.23.2-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ASP+ACCESS网上人才信息管理系统(源代码+设计说明书).zip

    ASP+ACCESS网上人才信息管理系统(源代码+设计说明书).zip

    ASP基于BS结构的工厂设备管理系统的设计与开发(源代码+设计说明书).zip

    ASP基于BS结构的工厂设备管理系统的设计与开发(源代码+设计说明书).zip

    node-v10.23.3-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    埃森哲_组织设计的指导思想gl.ppt

    埃森哲_组织设计的指导思想gl.ppt

    卷积神经网络(Convolutional Neural Networks,CNN)是深度学习领域中一种非常重要的神经网络结构,特

    卷积神经网络(Convolutional Neural Networks,CNN)是深度学习领域中一种非常重要的神经网络结构,特别适用于处理图像和视频数据。以下是关于卷积神经网络的500字资源介绍: 卷积神经网络是一类包含卷积计算的前馈神经网络,它的核心在于“卷积与池化”操作。在卷积层中,神经元仅与部分邻层神经元连接,这种局部连接和权值共享的特性使得卷积神经网络能够以较小的计算量学习格点化特征,如像素和音频,且稳定有效。 卷积神经网络的主要构成包括卷积层、池化层和全连接层。卷积层通过卷积核对输入图像进行特征提取,生成特征图;池化层则对特征图进行下采样,降低数据维度,同时保留重要信息;全连接层则负责将提取的特征进行整合,用于分类或回归任务。 卷积神经网络在计算机视觉领域具有广泛的应用,如图像分类、目标检测、人脸识别等。通过训练大量的图像数据,卷积神经网络能够自动学习图像的特征表示,比传统的手工设计特征方法更加有效。此外,卷积神经网络也被应用于自然语言处理、语音识别等领域,并取得了显著的成果。 总之,卷积神经网络是一种强大的深度学习模型,它通过模拟人类的视觉系统来处理图像和视频数据

    基于VB+access实现的小区物业管理系统(系统+论文).zip

    基于VB+access实现的小区物业管理系统(系统+论文) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    基于matlab实现的用于边角网平差,可实现平差、误差椭圆绘制、成果坐标输出等 内附参考观测数据.rar

    基于matlab实现的用于边角网平差,可实现平差、误差椭圆绘制、成果坐标输出等 内附参考观测数据.rar

    ASP+ACCESS新闻发布系统(源代码+设计说明书).zip

    ASP+ACCESS新闻发布系统(源代码+设计说明书).zip

Global site tag (gtag.js) - Google Analytics