服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java详细讲解文件的读写操作方法

Java详细讲解文件的读写操作方法

2022-11-29 15:13LNORA Java教程

文件读写主要依靠io流完成,流(Stream)是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道,数据源发送的数据经过这个通道到达目的地,按流向区分为输入流和输出流

java的IO

Java程序允许通过流的方式与输入输出设备进行数据传输。Java中的流都在java.io包中,称为IO(输入输出)流。IO流按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同,又可以分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据,在IO包中,字节流的输入输出分别用java.InputStream和java.io.OutputStream表示,字符流的输入输出分别用java.io.Reader和java.io.Writer表示。

字节流

在计算机中,无论是文本,图片,音频还是视频,所有的文件都是以二进制的方式存在的,字节流是程序中最常用的流,根据数据的传输方向分为字节输入流和字节输出流,在JDK中,提供了两个抽象类InputStream和OutputStream,他们是字节流的顶级父类,所有的字节输入流都继承OutputStream.

InputStream的常用方法

 int read()//从输入流中读取一个八位的字节,并把它转换为0~255之间的整数,并返回这一整数
 int read(byte[]b)//从输入流读取若干个字节,把它们保存到参数b指定的字节数组中,返回的整数表四读取字节的数目
 int read(byte[]b,int off,int len)//从输入流读取若干字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节数目
 void close()//关闭此输入流并释放与该流关联的所有系统资源 

OutputStream的常用方法

 void write(int b)//向输出流写入一个字节
 void write(byte[]b)//把参数b指定的字节数组的所有字节写到输出流
 void write(byte[]b,int off,int len)//将指定的byte数组中从偏移量off开始的len个字节写入输出流
 void flush()//刷新此输出流并强制手写所有的缓冲的输出字节
 void close()//关闭此输出流并释放与此流相关的所有系统资源

flush()方法用来将当前输出流缓冲区(通常是字节数组中)的数据强制写入目标设备,此过程称为刷新。InputStream和OutputStream这两个类虽然提供了一些读写数据有关的方法,但是这两个类都是抽象类,不能被实例化。

字节流读写文件

由于计算机中的数据基本都保存在硬盘的文件中,在操作文件时,从文件中读取数据并将数据写入文件,FileInputStream和File Output Stream是进行读写操作的两个类。由于从文件中读取数据是重复的操作,因此需要通过循环语句来实现数据的持续读取。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package IO;
import java.io.FileInputStream;
public class Li01 {
    public static void main(String[] args) throws Exception{
        FileInputStream in=new FileInputStream("test.txt");
        int b=0;
        while(true){
            b=in.read();
            if(b==-1){
                break;
            }
            System.out.print(b+" ");
        }
        in.close();
    }
}

演示结果

Java详细讲解文件的读写操作方法

之所以输出数字是因为硬盘上面的文件都是以字节的形式存在的,在进行读取文件数据时,必须保证文件在相应目录存在并且是可读的。

如何将数据写入到文件中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package IO;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
public class Li02 {
    public static void main(String[] args) throws Exception{
        OutputStream out=new FileOutputStream("example1.txt");
        String str="好好学习,天天向上!";
        byte[]b=str.getBytes(StandardCharsets.UTF_8);
        for(int i=0;i<b.length;i++){
            out.write(b[i]);
        }
        out.close();
    }
}

Java详细讲解文件的读写操作方法

通过FileOutputStream写数据时,自动创建了文件example1.txt,并将数据写入文件,如果向已存在文件中写入内容,首先该文件的内容会被清空,然后再写入新的数据,如果想要在已存在的文件后追加内容,可以在文件名后面加个boolean值并设置为true。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package IO;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 public class Li02 {
     public static void main(String[] args) throws Exception{
         OutputStream out=new FileOutputStream("example1.txt",true);
         String str="好好学习,天天向上!";
         byte[]b=str.getBytes(StandardCharsets.UTF_8);
         for(int i=0;i<b.length;i++){
             out.write(b[i]);
         }
         out.close();
     }
 }

Java详细讲解文件的读写操作方法

到此这篇关于Java详细讲解文件的读写操作方法的文章就介绍到这了,更多相关Java文件操作内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_55749088/article/details/123997343

延伸 · 阅读

精彩推荐
  • Java教程SpringBoot 如何使用RestTemplate发送Post请求

    SpringBoot 如何使用RestTemplate发送Post请求

    这篇文章主要介绍了SpringBoot 如何使用RestTemplate发送Post请求的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐...

    占位符号3612021-11-25
  • Java教程深入浅析Java中的volatile

    深入浅析Java中的volatile

    volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色.这篇文章主要介绍了深入浅析Java中的volatile,需要的朋友可以参考下...

    dreamcatcher-cx3302020-08-30
  • Java教程启动异常invalid constant type:15的解决方案

    启动异常invalid constant type:15的解决方案

    今天小编就为大家分享一篇关于启动异常invalid constant type:15的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Java之家11912021-06-20
  • Java教程Java实现多线程聊天室

    Java实现多线程聊天室

    这篇文章主要为大家详细介绍了Java实现多线程聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    #define微光9772021-09-15
  • Java教程SpringBoot缓存Ehcache的使用详解

    SpringBoot缓存Ehcache的使用详解

    EhCache、Redis比较常用,使用Redis的时候需要先安装Redis服务器,本文给大家介绍SpringBoot缓存Ehcache的使用详解,感兴趣的朋友跟随小编一起看看吧...

    springboot葵花宝典6972022-09-23
  • Java教程java 代理模式及动态代理机制深入分析

    java 代理模式及动态代理机制深入分析

    这篇文章主要介绍了java 代理模式及动态代理机制深入分析的相关资料, 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象...

    Java之家2052020-08-23
  • Java教程Java源码解析ConcurrentHashMap的初始化

    Java源码解析ConcurrentHashMap的初始化

    今天小编就为大家分享一篇关于Java源码解析ConcurrentHashMap的初始化,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    李灿辉5142021-06-30
  • Java教程实例讲解Java HashSet

    实例讲解Java HashSet

    这篇文章主要介绍了Java HashSet的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下 ...

    菜鸟教程4502020-07-07