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

dapenge 2010-03-23 04:37:46
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类吗???
...全文
818 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
stu202060510 2010-03-23
  • 打赏
  • 举报
回复
现在一般读写文件都会用BufferedReader和BufferedWriter包装一下,BufferedReader的readLine()方法很不错的。有点不明白为什么 11楼 既然用了FileReader类,为什么不用FileWriter类
clinique1234 2010-03-23
  • 打赏
  • 举报
回复
  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" );
}
水中影子 2010-03-23
  • 打赏
  • 举报
回复
楼上可以
zyus1987 2010-03-23
  • 打赏
  • 举报
回复

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("文件已复制");
}

}
YSHjava 2010-03-23
  • 打赏
  • 举报
回复
这个可以
zyus1987 2010-03-23
  • 打赏
  • 举报
回复
这个啊~!我看看吧~!
dapenge 2010-03-23
  • 打赏
  • 举报
回复
能帮我看看上面的拷贝文件的程序吗 怎么控制实现不会讲B的文件覆盖啊???
zyus1987 2010-03-23
  • 打赏
  • 举报
回复
Reader和InputStream的使用是看读取文件的格式;一般记事本之类的文件都是用Reader,图像数据之类的原始字节用InputStream,具体适用范围还请查看API
dapenge 2010-03-23
  • 打赏
  • 举报
回复
能帮我看个拷贝文件的程序吗??实现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("文件已复制");
}
}
zyus1987 2010-03-23
  • 打赏
  • 举报
回复
java读取文件的方式分为两种:一种是Reader《字符流》,一种是InputStream《字节流》,他们两个是平级的,没有继承关系。但是可以通过InputStreamReader进行转换,将InputStream《字节流》转换为Reader《字符流》,提高读取效率。
TillPerfect 2010-03-23
  • 打赏
  • 举报
回复
使用Reader读取文件比较快速,因为它按字符来读取。
API中有句话,“FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader”
knightzhuwei 2010-03-23
  • 打赏
  • 举报
回复
你问“访问文件必须用InputStream类吗???”
又给出了不是“不是InputStream子类”的FileReader访问文件的代码
那答案不是很明显么 访问文件不是必须用InputStream类
dapenge 2010-03-23
  • 打赏
  • 举报
回复
不是的 FileReader是Reader的子类 不是InputStream子类
knightzhuwei 2010-03-23
  • 打赏
  • 举报
回复
无法理解LZ到底想说什么
in = new FileReader("c:\\HelloWorld.txt");不就是不用InputStream访问文件么 ?怎么还会有最后一个问题呢

62,614

社区成员

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

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