Java输入输出流实例详解

作者:shuair 时间:2023-05-28 15:54:35 

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/shuair/article/details/81984299

标签:Java,输入输出流
0
投稿

猜你喜欢

  • Java emoji持久化mysql过程详解

    2023-10-10 23:11:49
  • 深入理解Java之HashMap源码剖析

    2022-03-24 12:18:06
  • 使用Android开发接入第三方原生SDK实现微信登录

    2023-04-05 09:41:14
  • 详解ThreadLocal为什么会内存溢出原理

    2023-11-09 18:45:26
  • Android Webview使用小结

    2022-12-06 07:26:19
  • Java中的字符串常量池详细介绍

    2023-03-08 09:16:41
  • java selenium 操作浏览器实例

    2023-04-13 17:57:13
  • SuperSocket入门--Telnet服务器和客户端请求处理

    2021-07-24 19:35:14
  • java之函数式接口解读

    2022-07-16 16:32:46
  • 详解C#如何实现分割视频

    2022-12-07 10:48:23
  • Java实现添加条形码到PDF表格的方法详解

    2023-04-26 12:37:25
  • Android无需读写权限通过临时授权读写用户文件详解

    2022-11-05 12:50:54
  • c#中文转unicode字符示例分享

    2022-05-26 05:07:47
  • Android中的应用认领总结

    2022-03-12 02:54:05
  • springboot web项目打jar或者war包并运行的实现

    2022-11-20 03:01:59
  • C#中ManualResetEvent实现线程的暂停与恢复

    2021-06-20 14:59:24
  • 二叉搜索树实例练习

    2022-09-20 22:03:06
  • Java虚拟机栈jvm栈的作用

    2023-11-10 13:52:15
  • 详解AndroidStudio3.0开发调试安卓NDK的C++代码

    2022-09-29 07:02:53
  • eclipse 联想功能设置技巧

    2023-03-18 04:11:39
  • asp之家 软件编程 m.aspxhome.com