黑马程序员技术交流社区
标题:
IO流问题
[打印本页]
作者:
黑马-王言龙
时间:
2012-6-22 21:42
标题:
IO流问题
本帖最后由 wyl530274554 于 2012-6-22 22:26 编辑
import java.io.*;
public class SystemIn {
public static void main(String[] args) throws IOException {
InputStream is = System.in;
FileOutputStream fos = new FileOutputStream("G:\\Hello.txt");
int c = 0;
while((c=is.read()) != -1) {
fos.write((char)c);
}
is.close();
fos.close();
}
}
复制代码
上面代码中is.read()方法返回的是下一个数据字节。
如果我在MS-DOS下输入"你好!",则会在G:\\Hello.txt内写入"你好!"
这里读一个字节写一个字节,而java中的字符是两个字节表示,为什么能在文件里显示正常的?
作者:
邓杰
时间:
2012-6-22 21:56
这这是记事本的功能实现的;
这分为好几个过程;你在写入“你好”这两个字符的时候;JVM的读取流就会把它按照默认的编码形式把它拆成字节;以二进制的形式进行读取;
你的输出流也会把这些数据以字节的形式写入硬盘存放;
而记事本在打开硬盘中的数据之前会把他加载到内存中;按照默认的编码形式将其还原成字符,所以就没有问题;
当然这些功能的实现都是在没有指定编码形式的的前提下实现的;具体的这方面的内容会毕老师在后面的编码表视频中有详细的讲解;到时就会明白了;
作者:
黄连兵
时间:
2012-6-22 21:57
通过FileOutputStream写入到文件中的在底层其实都是二进制代码,你用记事本打开,记事本程序就将这些二进制代码进行了一次解码显示在其界面上,使用的是默认的编码和解码方式,当然不会出错了~!
作者:
张华廷
时间:
2012-6-22 23:43
FileOutputStream都是以二进制写入到文件中的,JVM的读取流就会把它按照默认的编码形式把它拆成字节;以二进制的形式进行读取,然后把二进制转换成字节,写入文件中。
作者:
黄晓蚁
时间:
2016-6-19 13:58
这些基础都可以在视屏中学到对么
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2