读书人

文件操作时的字节流是什么错误?它是二

发布时间: 2012-05-23 13:44:13 作者: rapoo

文件操作时的字节流是什么东东?它是二进制的吗?
n = in.read(b, 0, 1024);

in是输入流。
文件操作时的字节流是什么东东?它是二进制的吗?

[解决办法]
open 方式是 二进制方式,你可以把它看作二进制,否则就是字符方式
[解决办法]
为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的一维二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。

[解决办法]

探讨
n = in.read(b, 0, 1024);

in是输入流。
文件操作时的字节流是什么东东?它是二进制的吗?

[解决办法]
那个只是缓冲的实现机制,与流的内部表示是两回事。
[解决办法]
同样的文件操作 又有api 又有 c的方法又有c++的 …… 一大堆注意事项 想想就觉得不想学了
[解决办法]
希望下面解释对你有所帮助


字节流和字符流

在整个IO包中,流的操作就分为两种:
字节流:字节输出流OutputStream,字节输入流InputStream
字符流(一个字符等于两个字节):字符输出流Writer,字符输入流是Reader

IO操作的基本步骤
1,使用File找到一个文件
2,使用字节流和字符流的子类为OutputStream,InputStream,Writer,Reader进行实例化操作
3,进行读或写操作
4,关闭:close(),在流的操作中最终必须进行关闭
在java中"\r\n"表示换行

字节输出输入
import java.io.*;

public class OutputStreamDemo {
public static void main(String args[]) throws IOException
{
//写入数据
File file=new File("d:"+File.separator+"demo.txt");
OutputStream out=new FileOutputStream(file,true);//在文件后追加
String str="hello world";
byte b[]=str.getBytes();
out.write(b);
out.close();
//读取数据
File file1=new File("d:"+File.separator+"demo.txt");
InputStream in=new FileInputStream(file1);
byte[] by=new byte[(int)file.length()];//根据文件大小开辟字节空间
in.read(by);
System.out.println(by.toString());
}
}
字符输出输入
import java.io.*;
public class WriterDemo {
public static void main(String args[]) throws IOException
{
//字符写入
File file=new File("d:"+File.separator+"demo.txt");
Writer writer=new FileWriter(file);
String str="hello world!";
writer.write(str);
writer.close();
//字符读取
File file1=new File("d:"+File.separator+"demo.txt");
Reader read=new FileReader(file1);
char[] ch=new char[(int)file1.length()];
read.read(ch, 0, (int) file1.length());
System.out.println(ch.toString());
read.close();
}
}
字节流在操作的时候是直接与文件本身关联,不使用缓冲区,字节直接存到文件中;字符流在操作的时候是通过缓冲区与文件操作,字符到缓冲区然后再到文件中,所以字符流中存在一个flush()方法来刷新缓冲区。
综合比较来讲,在传输或者在硬盘上保存的内容是以字节的形式存在的,所以字节流的操作较多,但是在操作中文的时候字符流比较好用。

读书人网 >C语言

热点推荐