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


猜你喜欢
- 大家好,今天给大家带来一个仿360手机卫士悬浮窗效果的教程,在开始之前请允许我先说几句不相干的话。不知不觉我发现自己接触Android已有近
- 目录微服务微服务架构SpringCould简介环境搭建1. 创建数据库2. 新建一个子模块api3. 新建一个子模块provider作为服务
- 大家好,我叫柠檬水,今天马上就要放假,突然想到自己以前的伙伴、同学,好像想到他们空间没怎么发过动态,难道是把我屏蔽了吗,好友又那么多,行吧,
- gradle文件执行流程做过Android开发的同学都知道 ,Android项目中存在三个gradle文件,那你是否知道他们的执行流程呢?请
- 与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流。本文将简单讲解条件、循环和switch。一、块作用域块(block),即复
- 很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了。ArrayList是用于实现动态
- Math.abs()的实现源码通过三目运算符判断a是否小于0来实现/** * Returns the absolute valu
- Java泛型是JDK 5引入的一个特性,它允许我们定义类和接口的时候使用参数类型,泛型在集合框架中被广泛使用。类型擦除是泛型中最让人困惑的部
- 一、IO流的分类字符流ReaderInputStreamReader(节点流)BufferedReader(处理流)WriterOutput
- 创建一个用户类类型的集合,手动输入用户库主要是判定输入的用户名和密码是否与库中的匹配做好区别是用户名输入错误还是密码输入错误的提示。定义用户
- 本文为大家分享了java开发环境配置教程,供大家参考,具体内容如下配置环境变量win 7配置(win 10配置在下面):1.安装完成后,右击
- 本文实例为大家分享了Android实现连连看游戏的具体代码,供大家参考,具体内容如下本人用 android studio 实现的源码主活动
- 概述:Flutter中常用的滑动布局 ScrollView 有 SingleChildScrollView、NestedScrollView
- GradientTextViewGithub点我一个非常好用的库,使用kotlin实现,用于设置TexView的字体 渐变颜色、渐变方向 和
- 文中涉及到文件名称排序,固定根目录以及返回上一层在上面,方便选择等。根据文件后缀,筛选文件还没做。先看效果。1、效果图2、核心代码如下是通过
- 本文实例为大家分享了Spring Boot图片上传的具体代码,供大家参考,具体内容如下package com.clou.inteface.d
- 前些日子,组里为了在目前的Android程序里实现基于ListView子项的动画效果,希望将最新的RecyclerView引入到程序中,于是
- 本文实例讲述了C#中的try catch finally用法。分享给大家供大家参考。具体分析如下:try中的程序块是有可能发生错误的程序块,
- 1. 什么是 spring-boot-devtoolsspring-boot-devtools 是 spring-boot项目开发时的一个热
- 一、前期准备1、申请好微信商户号appid,拿到商户id和商户秘钥,退款的话需要商户证书2、申请好支付宝商户号appid,商户公钥和秘钥(需