关于文件读取输入留的3个问题

ljava314 2007-11-24 02:32:14
第一个
代码
//此方法用来读取当前目录下的一个test.txt文件文件内容如下
//这是一个测试文本
//用来测试FileInputStream读取文件内容
// --2007.11.24

import java.io.*;
public class Test
{
public static void main (String [] ar) throws IOException
{
if(ar.length == 0)
{
System.out.println("没有输入正确格式");
return;
}
InputStream fis = new FileInputStream("test.txt");
int size;
size = fis.available();
System.out.println("文件内容如下:");
char [] text = new char[100];
for (int i =0 ;i<size ; i++)
{
text [i] = (char) fis.read();
System.out.print(text[i]);
}
fis.close();
}
}
编译运行后
结果显示为
???????????
??????FileInputStream????????
--2007.11.24
请问这是为什么不能读取文档中的中文?是否是因为这是利用字节流实现的读取?
没有用编译器 用的是UE写的 DOS下运行得出的结果
后来我用 BufferedRead在写一个 发现可以读取中文 显示文档中的所有内容
这是不是 字节流 和 字符流的区别?是不是因为字符流是Unicode?

问题2
//利用FileOutputStream向文本中写如内容
import java.io.*;
public class Test
{
public static void main (String [] ar) throws IOException
{
//s里面的\n是我想实现一个文档的换行效果
String s = "这是个测试文件\n用FileOutputStream向文本中写如内容\n--2007.11.24";
byte [] word = s.getBytes();
OutputStream fos = new FileOutputStream ("test.txt");
fos.write(word,0,word.length);
System.out.println("文件已更新");
fos.close();
}
}

运行后发现文档已经写入 但是换行效果并没有显示出来 反而显示的是黑色的方框
如果说不支持转义符的话 我用\t来代替\n确可以实现 tab效果
请问这是为什么??



3
请问 Read,Write类和InputStream,OutputStream类的区别是什么?
实际应用中哪个哪个使用的比较多?比较实用?



...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocoice 2007-11-24
  • 打赏
  • 举报
回复
4楼的讲的精辟啊
chinpom 2007-11-24
  • 打赏
  • 举报
回复
利用FileOutputStream向文本中写入内容时应该用\r\n实现换行,楼主不妨也试试。Java中的转义字符和C的还是有些区别的 不过,%n还是有别的用处的,我以前碰到过使用%n代替\n的情况
chinpom 2007-11-24
  • 打赏
  • 举报
回复
啊!不好意思,我弄错了 %n 代替 \n 是不行的
chinpom 2007-11-24
  • 打赏
  • 举报
回复
对于 Read,Write类和InputStream,OutputStream类的区别 你到网上搜索一下,应该可以得到更好的答案
chinpom 2007-11-24
  • 打赏
  • 举报
回复
利用FileOutputStream向文本中写入内容时应该用 %n 代替 \n 能更好的实现换行,我以前也遇到过这样的问题,楼主不妨也试试。Java中的转义字符和C的还是有些区别的
iskyshop 2007-11-24
  • 打赏
  • 举报
回复
字节是1Byte而字符是2Bytes,中文的汉字都是2字节的,字节流的读取是原始的字节数据,而字符流可以允许程序读写文本。将reader,writer放在原始的字节数据流上端可以处理特定的文本,字符流的读取也是从字节流读取开始的!
ljava314 2007-11-24
  • 打赏
  • 举报
回复
TO 1楼
后来自己查了一下资料
有了解到 字节流读取需要转码
但是这样是不是字节流读取或者读取的一个缺陷呢?
就我认为要是就凭这一点 字节流读取 怎么和 字符流读取 相比?
tianniaohe 2007-11-24
  • 打赏
  • 举报
回复
问的很好,学习
iskyshop 2007-11-24
  • 打赏
  • 举报
回复
用这个方法看看,FileInputStream读取中文需要转码

static String readInput(String strInFile) {
StringBuffer buffer = new StringBuffer();
try {
FileInputStream fis = new FileInputStream(strInFile);
InputStreamReader isr = new InputStreamReader(fis, "GB2312");
Reader in = new BufferedReader(isr);
int ch;
while ((ch = in.read()) > -1) {
iCharNum += 1;
buffer.append((char)ch);
}
in.close();
return buffer.toString();
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧