第一个
代码
//此方法用来读取当前目录下的一个test.txt文件文件内容如下
//这是一个测试文本
//用来测试FileInputStream读取文件内容
//    --2007.11.24import 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类的区别是什么?
实际应用中哪个哪个使用的比较多?比较实用?
   
       

解决方案 »

  1.   

    用这个方法看看,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;
    }
    }
      

  2.   

    字节是1Byte而字符是2Bytes,中文的汉字都是2字节的,字节流的读取是原始的字节数据,而字符流可以允许程序读写文本。将reader,writer放在原始的字节数据流上端可以处理特定的文本,字符流的读取也是从字节流读取开始的!
      

  3.   

    利用FileOutputStream向文本中写入内容时应该用 %n 代替 \n 能更好的实现换行,我以前也遇到过这样的问题,楼主不妨也试试。Java中的转义字符和C的还是有些区别的
      

  4.   

    对于 Read,Write类和InputStream,OutputStream类的区别 你到网上搜索一下,应该可以得到更好的答案
      

  5.   

    利用FileOutputStream向文本中写入内容时应该用\r\n实现换行,楼主不妨也试试。Java中的转义字符和C的还是有些区别的 不过,%n还是有别的用处的,我以前碰到过使用%n代替\n的情况