热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IO流的总结(一)

IO流的介绍:其实在我们现实生活中有很多流,例如:水流,电流,气流 等等都是是流,但在Java中IO流是指对数据的操作的流。按照流的分类:1:字节流和字符流Reader和Input

IO流的介绍:

其实在我们现实生活中有很多流,例如:水流,电流,气流  等等都是是流,但在Java中IO流是指对数据的操作的流。

按照流的分类:

1:字节流和字符流

Reader和InputStream

2:输入流和输出流。

InputStream和OutputStream

字符流的抽象基类:

         * Reader     (读文件)  ,         Writer(写文件)

由上面四个类派生的子类名称都是以其父类名作为子类的后缀:

            如:FileReader和FileInputStream

字符流的介绍:



  1.    字符流中的对象融合了编码表一般是GBK  

  2.   字符流相对来说比较适合处理文本数据,不适合处理二进制数据

  3.         字符流以字符为单位,在处理中文时候不会出现乱码

字符流读写:



  1. 注意事项:



  2. 写入文件后必须要用flush()刷新。



  3. 用完流后记得要关闭流



  4. 使用流对象要抛出IO异常



  5. 定义文件路径时,可以用“/”或者“\\”。



  6. 在创建一个文件时,如果目录下有同名文件将被覆盖。



在读取文件时,必须保证该文件已存在,否则出异常。

 

字符流写数据实例:FileWriter

 

package com.itheima.test;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileWriter writer = new FileWriter("src/Test2.txt");

// 创建FileWriter对象
// 写入数据

writer.write("我是字符流");
writer.flush();
// 刷新
System.out.println("写入数据成功");
if (writer!=null) {

writer.close();
// 关闭字符流
}
}
}

 

 

 

字符流读数据实例:FileReader

 

package com.itheima.test;
import java.io.FileReader;
import java.io.IOException;
public class Test2 {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
//抛出异常
FileReader reader=null;
reader=new FileReader("src/Test2.txt");
//获取FileReader对象
char[] ch=new char[1024];
//使用字符数组来存读到的数据
int count;
//计算器
while ((count=reader.read(ch))!=-1) {
//判断是否还有数据,如果不等于-1那么还有数据
System.out.println(new String (ch,0,count));
//打印数据

}
reader.close();
     //关闭FileReader流
}
}

 

 

字符流续写数据:FileWriter

 

package com.itheima.test;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileWriter writer = new FileWriter("src/Test2.txt",true);
//在有参构造函数中追加boolean值,true表示可以在文件末尾追加数据,false表示不能追加数据
// 创建FileWriter对象
// 写入数据
writer.write("我是字符流");
writer.flush();
// 刷新
System.out.println("写入数据成功");
if (writer!=null) {

writer.close();
// 关闭字符流
}
}
}

 

 

 

字节流的介绍:

字节流,主要用来处理字节或二进制对象。

字节流写文件实例:

 

package com.itheima.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileDemo1 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file=new File("src/demo1.txt");
//如果有文件就不创建,没有则创建文件
FileOutputStream out=new FileOutputStream(file);
//创建FileOutputStream对象
byte by[]=new byte[1024];
//创建一个byte类型数组
String name="刘海清";
//名字
by=name.getBytes();
//把字符串转化为字节数组
out.write(by, 0, by.length);
//把字节数组写到文件里,从0到数组的长度
out.close();
//关闭FileOutputStream流
}
}

 

字节流读取数据实例:

 

 

package com.itheima.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileDemo2 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file=new File("src/demo1.txt");
FileInputStream in=new FileInputStream(file);
//输入流
int count;
//计数器
byte[] by=new byte[1024];
//字节数组
while((count=in.read(by))!=-1) {
//如果不等于-1那么还有数据
System.out.println(new String(by,0,count));
}
in.close();
//关闭流
}
}

 

作业:实现一个文件拷贝的功能

package com.itheima.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileDemo2 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileInputStream in=new FileInputStream("src/demo1.txt");
//输入流
int count;
//计数器
byte[] by=new byte[1024];
//字节数组
String name=null;
while((count=in.read(by))!=-1) {
//如果不等于-1那么还有数据
System.out.println(name=new String(by,0,count));
}
for (byte c : by) {
System.err.println(c);
}
File file=new File("src/demo2.txt");
FileOutputStream out=new FileOutputStream(file);

out.write(by, 0, by.length);
out.close();
in.close();
//关闭流
}
}

 


推荐阅读
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
author-avatar
狂风
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有