日期:2014-05-20  浏览次数:20855 次

IO初级问题
BufferedReader和BufferedWriter可不可以进行文本文件以外的文件进行读写,如果可以,怎么读写,如果不行,应该用什么流来进行(除了DataOutputStream外,还有没有什么流适合传文件的,字符流和字节流都行)

------解决方案--------------------
Reader和Writer的设计之初就是为了解决字符流的读写问题的。
有了这两个类,我们可以直接面向字符编程,而字符向二进制数据的转码过程,被隐藏在内,我们不必关心细节问题。

文件传输,一般都是面向二进制数据流来编程的,因为,既然传输文件数据,我们就没有必要关心文件的内容,我们又不是搞压缩的,传数据而已。
所以,楼主使用InputStream和OutputStream就可以了,
提高性能,可以使用BufferedInputStream
------解决方案--------------------
BufferedReader提供的方法是read(char[] cbuf, int off, int len)和readLine();等,用来处理字符流(文本文件)。
BufferedInputStream提供的方法是read(byte[] b, int off, int len)等,处理的是字节流(二进制文件)
------解决方案--------------------
String.getBytes(String charset)方法,可以把字符串转换成字节数组。

写是能写,但是,写进去了,能否正确读出来,就是问题了。

字符串转换成二进制数,是要看你用什么编码规则的。
------解决方案--------------------
Java code

读文件中的内容
Bufferedreader br = BufferedReader(new FileInputStream("文件路径\文件名"));

往文件写字符
BufferedWriter bw =.....

从键盘获得获得输入的字符串
Bufferedreader br = BufferedReader(new InputStreamReader(System.in));
String info = br.readLine();
//注意:br/bw读写的都是String型的,如果需要基本数据类型,需要强转。

------解决方案--------------------
文本以外的的文件 如果是音频或者图片 等等二进制的东西是不能用字符流读写的 必须要用字节流 BufferedInputStream bis=new BufferedInputStream(new FileInputStream(你的文件的路径加文件名));
这是输入 

BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(你要输出到哪里的路径+输出到那里的文件名));
------解决方案--------------------
探讨

Java code

读文件中的内容
Bufferedreader br = BufferedReader(new FileInputStream("文件路径\文件名"));

往文件写字符
BufferedWriter bw =.....

从键盘获得获得输入的字符串
Bufferedreader br = BufferedReader(new InputStreamReader(Syste……

------解决方案--------------------
IO流有很多种,你先搞清楚各种分类方法,搞清楚每一对In和Out是干嘛的,里面可以包装什么参数。找出自己惯用的一套就可以了,总之,各种读写都可以用IO解决
------解决方案--------------------
探讨
引用:

Java code

读文件中的内容
Bufferedreader br = BufferedReader(new FileInputStream("文件路径\文件名"));

往文件写字符
BufferedWriter bw =.....

从键盘获得获得输入的字符串
Bufferedreader br = BufferedReader(new I……

------解决方案--------------------
没理解你的意思 你吧源代码发出来
我看看
------解决方案--------------------
OutputStreamWriter 这个可以

写文件:
new OutputStreamWriter(new FileOutputStream(outputFileStr), ENCODE)

写字符串:
bout=new ByteArrayOutputStream();
writer = new OutputStreamWriter(bout, ENCODE);
ret = new String(bout.toByteArray(), ENCODE);
------解决方案--------------------
这两种流是用来读取字符的
------解决方案--------------------
探讨
我是想要一个既能写字符串,又能写文件的流,dataInputStream和dataOutputStream可以做到,但是遇到中文就容易出错,现在的问题是除了这两个流以外还有没有其他的流能够实现既能写字符串又能写文件的