Java中怎么实现输入输出流?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都创新互联公司网站建设公司,提供成都做网站、成都网站设计,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
字节输出流,输出到文件中(写)
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中怎么实现输入输出流问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款