关于文件的读取(字节流 字符流)

时间:2022-07-05 21:01:38
import java.io.*;
public class xx{
 public static void main(String args []) throws Exception{
  FileInputStream f = new FileInputStream("F:\\rublish\\c.txt");

  BufferedReader dr=new BufferedReader(new InputStreamReader(f));《《《《《------ 
*************************************************************
 这个读取文件怎么用两个对象 多了一步字节流到字符型的转换??
 我看了一句话还可以理解 { 所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.}

  **********************************************

  如果这样那么下面的程序怎么直接用字符读取文件
  import java.io.*;


public class FileCopy {
  public static void main(String[] args) {
   int b = 0;
   FileReader in = null;
   FileWriter out = null;
   
   
   try {
     in = new FileReader("c:\\HelloWorld.txt");《《《-----
     out = new FileWriter("c:\\HW.txt");《《《《《《---
 
  访问文件必须用InputStream类吗???

14 个解决方案

#1


无法理解LZ到底想说什么
in = new FileReader("c:\\HelloWorld.txt");不就是不用InputStream访问文件么 ?怎么还会有最后一个问题呢

#2


不是的  FileReader是Reader的子类 不是InputStream子类

#3


你问“访问文件必须用InputStream类吗???”
又给出了不是“不是InputStream子类”的FileReader访问文件的代码
那答案不是很明显么 访问文件不是必须用InputStream类

#4


使用Reader读取文件比较快速,因为它按字符来读取。
API中有句话,“FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader”

#5


java读取文件的方式分为两种:一种是Reader《字符流》,一种是InputStream《字节流》,他们两个是平级的,没有继承关系。但是可以通过InputStreamReader进行转换,将InputStream《字节流》转换为Reader《字符流》,提高读取效率。

#6


能帮我看个拷贝文件的程序吗??实现A中的文本到B  接着B的最后一个字符而
import java.io.*;


public class FileCopy {
  public static void main(String[] args) {
   int b = 0,c=0;
   FileReader in = null;
   FileWriter out = null;
   FileReader in1=null;
   
   try {
     in = new FileReader("c:\\HelloWorld.txt");
     out = new FileWriter("c:\\HW.txt");
     in1=new FileReader("c:\\HW.txt");
     while((c=in1.read())==-1){?????????//}《《----------------
     
     while((b=in.read())!=-1){
     
      out.write(b);
       System.out.write(b);
     }
     
     out.close();
     in.close(); 
     
   } catch (FileNotFoundException e2) {
     System.out.println("找不到指定文件"); System.exit(-1);
   } catch (IOException e1) {
     System.out.println("文件复制错误"); System.exit(-1);
   }
   System.out.println("文件已复制");
  }

#7


Reader和InputStream的使用是看读取文件的格式;一般记事本之类的文件都是用Reader,图像数据之类的原始字节用InputStream,具体适用范围还请查看API

#8


能帮我看看上面的拷贝文件的程序吗  怎么控制实现不会讲B的文件覆盖啊???

#9


这个啊~!我看看吧~! 关于文件的读取(字节流 字符流)

#10


这个可以

#11



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class FileCopy {
public static void main(String[] args) {
BufferedReader reader = null;
BufferedWriter writer =null;
String line = "";
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("H:\\zyus2.txt", true)));
reader = new BufferedReader(new FileReader("H:\\zyus1.txt"));
while((line = reader.readLine()) != null){
writer.write(line);
}
reader.close();
writer.close();

} catch (FileNotFoundException e2) {
System.out.println("找不到指定文件");
} catch (IOException e1) {
System.out.println("文件复制错误");
}
System.out.println("文件已复制");
}

}

#12


楼上可以

#13


  public static void main( String[] args )
    {
        int b = 0;
        FileReader in = null;
        FileWriter out = null;
        try
        {
            in = new FileReader( "c:\\HelloWorld.txt" );
            out = new FileWriter( "c:\\HW.txt", true );
            while( ( b = in.read() ) != -1 )
            {
                
                out.write( b );
                System.out.write( b );
            }
            
            out.close();
            in.close();
            
        }
        catch( FileNotFoundException e2 )
        {
            System.out.println( "aaa" );
        }
        catch( IOException e1 )
        {
            System.out.println( "bbb" );
        }
        System.out.println( "ccc" );
    }

#14


现在一般读写文件都会用BufferedReader和BufferedWriter包装一下,BufferedReader的readLine()方法很不错的。有点不明白为什么 11楼 既然用了FileReader类,为什么不用FileWriter类

#1


无法理解LZ到底想说什么
in = new FileReader("c:\\HelloWorld.txt");不就是不用InputStream访问文件么 ?怎么还会有最后一个问题呢

#2


不是的  FileReader是Reader的子类 不是InputStream子类

#3


你问“访问文件必须用InputStream类吗???”
又给出了不是“不是InputStream子类”的FileReader访问文件的代码
那答案不是很明显么 访问文件不是必须用InputStream类

#4


使用Reader读取文件比较快速,因为它按字符来读取。
API中有句话,“FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader”

#5


java读取文件的方式分为两种:一种是Reader《字符流》,一种是InputStream《字节流》,他们两个是平级的,没有继承关系。但是可以通过InputStreamReader进行转换,将InputStream《字节流》转换为Reader《字符流》,提高读取效率。

#6


能帮我看个拷贝文件的程序吗??实现A中的文本到B  接着B的最后一个字符而
import java.io.*;


public class FileCopy {
  public static void main(String[] args) {
   int b = 0,c=0;
   FileReader in = null;
   FileWriter out = null;
   FileReader in1=null;
   
   try {
     in = new FileReader("c:\\HelloWorld.txt");
     out = new FileWriter("c:\\HW.txt");
     in1=new FileReader("c:\\HW.txt");
     while((c=in1.read())==-1){?????????//}《《----------------
     
     while((b=in.read())!=-1){
     
      out.write(b);
       System.out.write(b);
     }
     
     out.close();
     in.close(); 
     
   } catch (FileNotFoundException e2) {
     System.out.println("找不到指定文件"); System.exit(-1);
   } catch (IOException e1) {
     System.out.println("文件复制错误"); System.exit(-1);
   }
   System.out.println("文件已复制");
  }

#7


Reader和InputStream的使用是看读取文件的格式;一般记事本之类的文件都是用Reader,图像数据之类的原始字节用InputStream,具体适用范围还请查看API

#8


能帮我看看上面的拷贝文件的程序吗  怎么控制实现不会讲B的文件覆盖啊???

#9


这个啊~!我看看吧~! 关于文件的读取(字节流 字符流)

#10


这个可以

#11



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class FileCopy {
public static void main(String[] args) {
BufferedReader reader = null;
BufferedWriter writer =null;
String line = "";
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("H:\\zyus2.txt", true)));
reader = new BufferedReader(new FileReader("H:\\zyus1.txt"));
while((line = reader.readLine()) != null){
writer.write(line);
}
reader.close();
writer.close();

} catch (FileNotFoundException e2) {
System.out.println("找不到指定文件");
} catch (IOException e1) {
System.out.println("文件复制错误");
}
System.out.println("文件已复制");
}

}

#12


楼上可以

#13


  public static void main( String[] args )
    {
        int b = 0;
        FileReader in = null;
        FileWriter out = null;
        try
        {
            in = new FileReader( "c:\\HelloWorld.txt" );
            out = new FileWriter( "c:\\HW.txt", true );
            while( ( b = in.read() ) != -1 )
            {
                
                out.write( b );
                System.out.write( b );
            }
            
            out.close();
            in.close();
            
        }
        catch( FileNotFoundException e2 )
        {
            System.out.println( "aaa" );
        }
        catch( IOException e1 )
        {
            System.out.println( "bbb" );
        }
        System.out.println( "ccc" );
    }

#14


现在一般读写文件都会用BufferedReader和BufferedWriter包装一下,BufferedReader的readLine()方法很不错的。有点不明白为什么 11楼 既然用了FileReader类,为什么不用FileWriter类