首页 > java字节流

java字节流

一  字节流

1.1字节输出流OutputStream

OutputStream是一个抽象类,操作的数据都是字节。

输出流中定义都是写write方法,如下图:

1.1.1 FileOutputStream类

OutputStream有很多子类,其中子类FileOutputStream可用来写入数据到文件。FileOutputStream类,即文件输出流,是用于将数据写入 File的输出流。

构造方法:

将数据写入文件中

    public static void method01() throws IOException{//创建字节输出流对象//如果该文件有则覆盖,如果没有则覆盖FileOutputStream fos=new FileOutputStream("E:\java\demo.txt");fos.write(100);//ASCII码//释放资源
        fos.close();}
    public static void method02() throws IOException{//创建字节输出流对象//如果该文件有则覆盖,如果没有则覆盖FileOutputStream fos=new FileOutputStream("E:\java\demo.txt");//byte[] bytes={97,98,99,100};//fos.write(bytes,1,1);//字符串转字节数组fos.write("你好吗,中国".getBytes());//释放资源
        fos.close();}
public static void method03() throws IOException{//创建字节输出流对象//如果该文件有则覆盖,如果没有则覆盖FileOutputStream fos=new FileOutputStream("E:\java\demo.txt",true);//换行 
//字符串转字节数组fos.write("hello,java".getBytes());//释放资源
        fos.close();}

给文件续写和换行时,在FileOutputStream的构造函数中,可以接受一个boolean类型的值,如果值true,就会在文件末位继续添加。

1.2字节输入流InputStream

InputStream是一个抽象类,定义了读的方法

1.2.1 FileInputStream类

FileInputStream类是InputStream的实现类,用它来读取文件内容

构造方法有

用它来读取数据

1 单个字节读

public static void method01() throws IOException{//明确数据源FileInputStream fis=new FileInputStream("E:\java\demo.txt");//从文件中读取一个字节int len1=fis.read();//强转字符型   加charSystem.out.println((char)len1);len1=fis.read();System.out.println((char)len1);len1=fis.read();System.out.println((char)len1);len1=fis.read();System.out.println((char)len1);len1=fis.read();System.out.println((char)len1);len1=fis.read();System.out.println(len1);//释放资源
        fis.close();}

2.单个字节循环读

public static void method02() throws IOException{FileInputStream fis=new FileInputStream("E:\java\demo.txt");int len=0;while((len=fis.read())!=-1){System.out.println((char)len);}//释放资源
        fis.close();}

3.用数组的形式一个个读

public static void method03() throws IOException{FileInputStream fis=new FileInputStream("E:\java\demo.txt");//创建数组byte[] bytes=new byte[2];int len=fis.read(bytes);System.out.println(new String(bytes));System.out.println(len);len=fis.read(bytes);System.out.println(new String(bytes));System.out.println(len);len=fis.read(bytes);System.out.println(new String(bytes));System.out.println(len);//释放资源
        fis.close();}

4.用数组的形式循环读

    public static void method04() throws IOException{FileInputStream fis=new FileInputStream("E:\java\demo.txt");//创建数组byte[] bytes=new byte[2];int len=0;while((len=fis.read(bytes))!=-1){System.out.println(new String(bytes,0,len));}//释放资源
        fis.close();}

字节流的练习:进行文件的复制

//文件的复制public static void method05() throws IOException{//数据源FileInputStream fis=new FileInputStream("E:\java\demo.txt");//目的地FileOutputStream fos=new FileOutputStream("F:\demo.txt");//开始复制int len=0;while((len=fis.read())!=-1){fos.write(len);}//释放资源
        fis.close();fos.close();}

 

转载于:https://www.cnblogs.com/zzq123/p/10219142.html

更多相关:

  • 菜鸟一枚,正在学习C++ Gui Qt4,整理很零碎,欢迎批评指正   1.窗口标题: QWidget *window = new QWidget; window->setWindowTitle("Enter Your Age"); **************************************** 关于标题...

  • 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 总体思路是: 比较两个链表头节点,较小的插入新链表指针之后,同时较小链表指针向后移动一位 实现如下: ListNode* mergeTwo...

  • 1.直接调用微软socket对象处理 static void Main(string[] args){try{IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });//在3721端口新建一个TcpListener对象TcpListener listener = new...

  •   现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线。   ZK有一个功能,就是创建临时节点,当机器启动应用的时候就会连接到一个ZK节点,然后创建一个临时节点,那么通过获取监听该路径,并且获取该路径下的节点数量就知道有哪些服务...

  • 前台到后台java时data日期类型的转化 在实体类中用@DataTimeFormat,这样设置即使传过来是空的字符串也是可以转的,要和前面传过来的格式一致,如 @XmlElement(name="BeginDate") @DateTimeFormat(pattern="yyyy-MM-dd") private Date begin...

  • 关于Stream和Collectors的用法,这应该是总结的最全的文章了,大家可以收藏一下。一:简介java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样就可以将多个操作依次串起来。Stream...

  • 枚举类型测试代码: public class EnumTest {public static void main(String[] args) {Size s = Size.SMALL;Size t = Size.LARGE;// s和t引用同一个对象?System.out.println(s == t); //// 是原始数据类...

  • 程序设计思路:分别建立两个类:ScoreInformation类(用来定义学生的基本信息以及设置set和get函数)ScoreManagement类(用来定义实现学生考试成绩录入,考试成绩修改,绩点计算等功能的函数)和一个主函数Text类 (通过输入的数字选项进行功能的实现,因为退出系统代码量极少,所以在主函数中实现此功能) 程序源...

  • package wjf; import java.util.Scanner; public class wjf1{public static void main(String[] args){ //主方法Scanner scan=new Scanner(System.in); System.out.p...

  • 日期:2018.10.07 星期五 博客期:014   一、Java中的位运算 代码如下: 1 package Morts107; 2 3 public class Test107 { 4 public static void main(String[] args) { 5 int z; 6...