Java输入输出流2

本文介绍了Java中输入输出流的基本概念,包括字符流与字节流的区别,并通过具体示例展示了如何使用BufferedInputStream进行文件读取及标记重置。此外,还演示了如何利用OutputStreamWriter写入文件并指定编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java程序中的输入输出操作都是以流的形式进行的,如果数据的流向是从程序到设备则是输出流,否则为输入流。

在读字符的时候用字符流,如文本文件、XML等。在读取二进制的时候用字节流。如RAR、EXE等不是文本以外的文件(图片)。以Buffered开头的流只是增加了缓冲区,以提高读取效率。点击打开链接

<span style="font-size:18px;">package cn.hpu.edu.hlj;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test3 {
	public static void main(String[] args)  {
		try{
		FileInputStream fis = new FileInputStream("d://helloworld.txt");
		BufferedInputStream bis = new BufferedInputStream(fis);
		int c =0;
		System.out.println(bis.read());//读取的是文件helloworld里的第一个字节n的ASCII码值110
		System.out.println(bis.read());//读取的是文件helloworld里的第二个字节i的ASCII码值105
		bis.mark(10);//找到文件中的第十个字节(在helloworld文件中第十个字节整好是空格)
		for(int i=0;i<10&((c=bis.read())!=-1);i++){
			System.out.println((char)c+"");
		}
		System.out.println();
		bis.reset();//将此流重新定位到最后一次对此输入流调用mark 方法时的位置(返回到开始mark的那个空格)
		for(int i=0;i<10&((c=bis.read())!=-1);i++){
			System.out.println(c+"");
		}
		bis.close();
	}catch(Exception e){
		e.printStackTrace();
	}
	}
}</span>
<span style="font-size:18px;">其中:helloworld.txt中的内容为:ni shi wo de xiao a xiao ping guo zen me ai ni dou bu xian duo hong hong de xiao jiu wo wen nuan le wo de xin </span>
<span style="font-size:18px;">运行结果:</span>
110       ( 读取的是文件helloworld里的第一个字节n的ASCII码值110
105        ( 读取的是文件helloworld里的第二个字节i的ASCII码值105
 
s
h
i
 
w
o
 
d
e


32           (s前面那个空格的ASCII码值)
115          (s的ASCII码值)
104          (h的ASCII码值)
105            (i的ASCII码值)
32            (空格的ASCII码值)
119          (w的ASCII码值)
111            (o的ASCII码值)
32           (空格的ASCII码值)
100          (d的ASCII码值)

101            (e的ASCII码值)

代码块二:

public static void main(String[] args){

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d://java//test//char.txt"));
osw.write("haohaoxuexi tiantianxiangshang");
System.out.println(osw.getEncoding());//获取编码形式
osw.close();
osw = new OutputStreamWriter(new FileOutputStream("d://java//test//char.txt",true),"ISO8859_1");//参数true 代表在char.txt原有内容的基础上继续添加新的内容。若不写true的话,新的内容将会覆盖原来char.txt文件中的内容。
osw.write("haohaoxuexi tiantianxiangshang");
osw.flush();//将缓冲区中的内容完全给写出来
System.out.println(osw.getEncoding());

}

运行结果为:

GBK
ISO8859_1





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值