关于FileOutputStream(上)

关于FileOutputStream(上)

http://img1.sycdn.imooc.com//climg/5d39c83c0001dda020221124.jpg

老师,这个fis.read()不是只读取一个字节码,怎么50不是2个字节吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2019-07-26 19:04:08

        同学你好,这里老师写了一个小例子,将50放在一个字符串中,写入和读取都是以一个字符串为例,同学在学习了后面的内容后,就可以理解这个例子!这里只是参考一下哦,例如:

public class ReaderDemo {
	public String transReadByBuf(String s) {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(s);
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		InputStreamReader isr = new InputStreamReader(fis);
		BufferedReader br = new BufferedReader(isr);
		int n = 0;
		String s1 = "";
		try {
			while ((n = br.read()) != -1) {
				char c = (char) n;
				s1 = s1 + String.valueOf(c);
			}
			System.out.println(s1);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		try {
			fis.close();
			br.close();
			isr.close();

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return s1;
	}

	public static void transWriteByBuf() {
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;
		OutputStreamWriter osw = null;

		try {
			fos = new FileOutputStream("hello.txt");
			
			bos = new BufferedOutputStream(fos);
			osw = new OutputStreamWriter(bos);
			String str = "你好吗?50我很好谢谢";
			osw.write(str);
			//osw.flush();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				osw.close();
				bos.close();
				fos.close();
				//bos.close();
				//osw.close();
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}
	public static void main(String[] args) {
		transWriteByBuf();
		String s="hello.txt";
		ReaderDemo readerDemo = new ReaderDemo();
		readerDemo.transReadByBuf(s);
	}
}

运行效果为:

http://img1.sycdn.imooc.com//climg/5d3ade200001569802160071.jpg

        如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2019-07-26 14:04:34

        同学你好,这里的50是一个整体,表示了一个字符,在存入文件时,它是以当时的编码形式将这个50所代表的字符,存入了文件中的,比如:

http://img1.sycdn.imooc.com//climg/5d3a95be00017ef804240155.jpg

在读取时,再将这个50以同样的编码形式读取出来,就还是一个50。

这里因为用是的ASCII的编码,所以以50存入,对应的字符是2,参考例如

http://img1.sycdn.imooc.com//climg/5d3a971b00015e1204780635.jpg

不同的编码,展示的对应字符和内容不相同,这里在以后的学习中,会慢慢熟悉这些内容的!

        如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 无限精彩 #1
    我想把50写进文件,确把2写进去了,要怎么才能把50写进去
    2019-07-26 17:02:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师