Java输入输出流实例详解

 更新时间:2018年09月07日 14:54:13   作者:shuair  
这篇文章主要介绍了Java输入输出流,结合实例形式详细分析了Java常见的输入输出常用操作技巧与相关注意事项,需要的朋友可以参考下

本文实例讲述了Java输入输出流。分享给大家供大家参考,具体如下:

字节输出流,输出到文件中(写)

OutputStream抽象类

选好文件

复制代码 代码如下:
File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "123.txt");

子类实例化,需要抛异常

稍后传输的数据覆盖原内容

OutputStream output = new FileOutputStream(file);

稍后传输的数据追加在原数据之后

OutputStream output = new FileOutputStream(file,true);

选好数据,转换为字节数组

String msg = "你好\r\n世界";
byte data[] = msg.getBytes();

  • windows系统txt文件换行用\r\n

输出到文件(向文件中写数据)

output.write(data);

写入部分数据

output.write(data,3,8);

  • 从字节数组data的脚标为3开始8个字节写入此输出流。

关闭输出流

output.close();

字节输入流,文件中数据读取到程序中(读)

InputStream抽象类

选好文件

File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "123.txt");

子类实例化,需要抛异常

FileInputStream input = new FileInputStream(file);

读取数据,并将数据保存到指定字节数组中

byte data[] = new byte[100];
int len = input.read(data);

  • 字节数组的长度需要选的合适,如果从文件中读取的内容的的字节数超过了指定字节数组的长度,那么超过的部分将无法保存到指定的字节数组中,这样内容就会丢失,如果遇到正文这样一个字占多个字节的,也可能出现乱码。

三种读取数据方式

byte data[] = new byte[100];
int len = input.read(data);

从此输入流中将最多 data.length 个字节的数据读入data数组中。在某些输入可用之前,此方法将阻塞。

返回:读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。

byte data[] = new byte[100];
int len = input.read(data,5,14);

从此输入流中将最多14个字节的数据读入data数组中,读入位置为data数组后偏移5个位置,即读入的开始位置是数组脚标为5的位置

返回:读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。

byte data[] = new byte[100];
int i = 0;
int read = input.read();
while (read != -1){
  data[i++] = (byte)read;
  read = input.read();
}

从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。

返回:下一个数据字节;如果已到达文件末尾,则返回 -1。

注意有参数的和无参数的read方法的返回值是不一样的,有参数的返回的是读取字节的个数,无参的返回的是字节的int值,如果要保存到字节数组,还需要强转为byte型。

将字节数组转换为字符串输出到控制台

String x = new String(data);
System.out.println(x);

关闭输入流

input.close();

字符输出流:Writer

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class Hello {
  public static void main(String[] args) throws Exception{
   File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "123.txt");
   Writer writer = new FileWriter(file);
   writer.write("你好\r\nworld");
   writer.close();
  }
}

write方法的参数直接写字符串即可。

必须要关闭字符输出流,不然数据只是保存在缓冲区中,并没有写入文件。

字符输入流:Reader

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class Hello {
  public static void main(String[] args) throws Exception {
   File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "123.txt");
   char data[] = new char[100];
   Reader reader = new FileReader(file);
   reader.read(data);
   String x = new String(data);
   System.out.println(x);
   reader.close();
  }
}

read方法是将读取的数据保存到字符数组中。

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • 利用5分钟快速搭建一个springboot项目的全过程

    利用5分钟快速搭建一个springboot项目的全过程

    Spring Boot的监控能够使开发者更好地掌控应用程序的运行状态,下面这篇文章主要给大家介绍了关于如何利用5分钟快速搭建一个springboot项目的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Springboot+Vue+axios实现文章收藏功能

    Springboot+Vue+axios实现文章收藏功能

    这篇文章主要为大家详细介绍了Springboot+Vue+axios实现文章收藏功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Spring使用注解和配置文件配置事务

    Spring使用注解和配置文件配置事务

    这篇文章主要为大家详细介绍了Spring使用注解和配置文件配置事务,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java 事务详解及简单应用实例

    Java 事务详解及简单应用实例

    这篇文章主要介绍了Java 事务详解及简单应用实例的相关资料,java事务能够保证数据的完整性和一致性,当然这是书本上的知识,具体如何应用这里举例说明,需要的朋友可以参考下
    2016-12-12
  • 实例解析观察者模式及其在Java设计模式开发中的运用

    实例解析观察者模式及其在Java设计模式开发中的运用

    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己.下面就以实例解析观察者模式及其在Java设计模式开发中的运用
    2016-05-05
  • Java的字节缓冲流与字符缓冲流解析

    Java的字节缓冲流与字符缓冲流解析

    这篇文章主要介绍了Java的字节缓冲流与字符缓冲流解析,Java 缓冲流是Java I/O库中的一种流,用于提高读写数据的效率,它通过在内存中创建缓冲区来减少与底层设备的直接交互次数,从而减少了I/O操作的开销,需要的朋友可以参考下
    2023-11-11
  • java 根据汉字生成拼音全拼或拼音首字母的示例

    java 根据汉字生成拼音全拼或拼音首字母的示例

    这篇文章主要介绍了java 根据汉字生成拼音全拼或拼音首字母的示例,帮助大家更好的利用Java处理数据,感兴趣的朋友可以了解下
    2020-11-11
  • 解析Spring 漏洞及其修复方案

    解析Spring 漏洞及其修复方案

    官宣了最近网传的Spring漏洞。攻击者利用该漏洞,可在未授权的情况下远程执行命令,今天通过本文给大家普及下漏洞分析影响范围及解决方案,感兴趣的朋友跟随小编一起看看吧
    2022-04-04
  • Java 泛型总结及详解

    Java 泛型总结及详解

    这篇文章主要介绍了Java 泛型的相关资料,并附简单实例代码,需要的朋友可以参考下
    2016-09-09
  • 关于struts返回对象json格式数据的方法

    关于struts返回对象json格式数据的方法

    以下为大家介绍,关于struts返回对象json格式数据的方法,希望对有需要的朋友有所帮助。
    2013-04-04

最新评论