中易网

读写文件的基本流有哪些

答案:6  悬赏:60  
解决时间 2021-03-21 01:55
Java 的,FileReader FileWriter File FileInputStream这些是吗
最佳答案
FileReader FileWriter File FileInputStream
这些都只是高级流。
还有诸如inputstream bufferedinputstream(带缓冲的)
很多,建议看下java.io.*;包下的源码。
很反感各处乱粘的无知勇士们
全部回答
FileReader,FileWriter,FileInputStream都是基本流,基本流的定义就是构造方法中可直接对File对象进行注入的流,像BufferedInputStream这些是高级流,只能通过传递其他基本流来创建对象
一、IO流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数据单位不同分为:字节流和字符流 3.按流的功能不同分为:节点流和处理流 二、IO流的四大抽象类: 字符流:Reader Writer 字节流:InputStream(读数据) OutputStream(写数据) 三、InputStream的基本方法 int read() throws IOException 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾 void close() throws IOException 关闭流释放内存资源 long skip(long n) throws IOException 跳过n个字节不读 四、OutputStream的基本方法 void write(int b) throws IOException 向输出流写入一个字节数据 void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地 五、Writer的基本方法 void write(int c) throws IOException 向输出流写入一个字符数据 void write(String str) throws IOException将一个字符串中的字符写入到输出流 void write(String str,int offset,int length) 将一个字符串从offset开始的length个字符写入到输出流 void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地 六、Reader的基本方法 int read() throws IOException 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾 七、节点流类型 八、访问文件之FileInputStream和FileOutputStream继承基类用于向文件中输入输出字节 九、访问文件之FileReader和FileWriter继承基类用于向文件中输入输出字符 ----输出流在构造函数第二个参数可以设置true意义为跟在已有文件后进行输入 ----此类流会抛出FileNotFoundException需要对其进行显示捕捉 十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。 此处理流的构造方法都得传相对应的基类类型 BufferedReader:提供了readLine方法用于高校读取一行字符串 BufferedWriter:提供了newLine用于写入一个行分隔符也就是换行 BufferedInputStream 没多大用处 BufferedOutputStream 没多大用处 十一、转换流:主要作用将字节流转换成字符流。用处较大! 转换流在构造时可以指定其编码集合 InputStreamReader需要和InputStream套接 OutputStreamWriter需要和OutputStream套接 例:OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream(文件路径); 方法例:osw.getEncoding(); 获得流的编码方式 十二、数据流与字节数组流: 数据流主要为实现可以存取Java原始数据类型如long,boolean 数据流是字节流 DataInputStream需要和InputStream套接 DataOutputStream需要和OutputStream套接 DataInputStream方法:readBoolean() readInt() read……()…… readUTF():网络传输常用方法 读一个Unicode字符串 DataOutputStream方法与DataInputStream基本对应为写的方法 //此构造函数等于已可以往一个字节数组里输入内容 ByteArrayOutputStream baos = new ByteArrayOutputStream (); //此方法为获取一个字节数组方法返回字节数组 baos.toByteArray(); //此方法获取字节数组占了多少字节 new ByteArrayInputStream(一个字节数组)。available() 1ByteArrayOutputStream baos = 2 new ByteArrayOutputStream(); 3 DataOutputStream dos = 4 new DataOutputStream(baos); 5 try { 6 dos.writeDouble(Math.random()); 7 dos.writeBoolean(true); 8 ByteArrayInputStream bais = 9 new ByteArrayInputStream(baos.toByteArray()); 10 System.out.println(bais.available()); 11 DataInputStream dis = new DataInputStream(bais); 12 System.out.println(dis.readDouble()); 13 System.out.println(dis.readBoolean()); 14 dos.close(); dis.close(); 15 } catch (IOException e) { 16 e.printStackTrace(); 17 } 十二、Print流 Print流只有输出流无输入流,PrintWriter和PrintStream分别针对字符字节 两个类提供了重载的Print和Println方法用于多种数据类型的输出 PrintWriter和PrintStream的输出操作不会抛出异常 PrintWriter和PrintStream有自动flush功能 ----System.setOut(接收OutputStream类):用于设置系统默认输出流 十二、Object流 等同于c#序列化,用直接将Object写入或读出 transient关键字为不序列化此成员变量 需要序列化的类必须实现Serializable接口 主要方法:writeObject(Object); readObject(); 读出为Object类型需要强转数据类型 1 import java.io.*; 2 3 public class TestObjectIO { 4 public static void main(String args[]) throws Exception { 5 T t = new T(); 6 t.k = 8; 7 FileOutputStream fos = new FileOutputStream("d:/share/java/io/testobjectio.dat"); 8 ObjectOutputStream oos = new ObjectOutputStream(fos); 9 oos.writeObject(t); 10 oos.flush(); 11 oos.close(); 12 13 FileInputStream fis = new FileInputStream("d:/share/java/io/testobjectio.dat"); 14 ObjectInputStream ois = new ObjectInputStream(fis); 15 T tReaded = (T)ois.readObject(); 16 System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k); 17 18 } 19 } 20 21 class T 22 implements Serializable 23 { 24 int i = 10; 25 int j = 9; 26 double d = 2.3; 27 transient int k = 15; 28 }
read函数(读取文件) read函数可以读取文件。读取文件指从某一个已翻开地文件中,读取肯定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后运用。 运用格式如下: number = read( 。。。 read函数(读取文件) read函数可以读取文件。读取文件指从某一个已翻开地文件中,读取肯定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后运用。 运用格式如下: number = read(handle, buffer ,n) ; 上述read调用函数中,各个参数的定义如下: handle: 这是一个曾经翻开的文件句柄,表示从这个文件句柄所代表的文件读取数据。 buffer: 指缓冲区,即读取的数据会被放到这个缓冲区中去。 n: 表示调用一次read操作,应当读几数量的字符。 number:表示系统实践所读取的字符数量。 假定某个文件的长度是600字符,而n的值是512,则在第1次调用读这个文件时,系统可以一般地读取512个字符地形式,并将这些字符数量传给number变量,因此number的值将变为88。要第2次读取这个文件时,由于文件曾经没有形式可供读取了,此时系统会前往0给number。另外,假设读取文件失利,系统将前往-1给number。 比如一个有100个字节的文件,第一次读取10个字节,这时读取指针在第10个字节处。再次停止10个字节的读操作时,会接着第一次读的位置接着往后读。假设还想从开端读,可运用lseek函数定位。 code: #include "lyl。h" #define buf 512 main() { static char filename[]="t1。txt" ; char buffer[buf] ; int handle ; int i ; int total = 0 ; handle = open(filename,o_rdonly) ; if ( handle == -1 ) { printf("[%s] create fail !!!! ",filename) ; exit(1) ; } else { while( (i = read(handle,buffer,buf) ) > 0 ) total =i ; } printf("the total character in 《%s》 is %d ",filename,total ) ; exit(0) ; } 顺序实施结果: the total character in 《t1。txt》 is 11 $cat t1。txt 1234567890 【 read系统调用】 功用描画: 从文件读取数据。 用法: #include ssize_t read(int fd, void *buf, size_t count); 参数: fd: 将要读取数据的文件描画词。 buf: 所读取到的数据的内存缓冲。 count: 需求读取的数据量。 前往说明: 胜利实施时,前往所读取的数据量。失利前往-1,errno被设为以下的某个值 eagain:翻开文件时设定了o_nonblock标志,并且以后没有数据可读取 ebadf:文件描画词有效,或许文件不可读 efault:参数buf指向的空间不可访问 eintr:数据读取前,操作被信号中缀 einval:一个或许多个参数有效 eio:读写出错 eisdir:参数fd索引的时目录 备注: 从串口读数据,只读一次,数据没有读全。参与while后,则数据读全了。 total_read_bytes=0; while(read_bytes=read(fd_485,buffer1,256)>0) { memcpy(buffer2+total_read_bytes,buffer1,read_bytes); total_read_bytes+=read_bytes; } for(i=0;i
  • 4楼网友:高冷不撩人
  • 2021-03-20 23:44
是啊~~~
  • 5楼网友:心与口不同
  • 2021-03-20 22:11
I/O这段基本分为的是两类,一类是字节,一类是字符。凡是Stream这种的都是字节读入,而Reader和Writer都是属于字符。而文件相关的,当然就有FileInputStream,FileReader等等这些了。你可以好好看看相关书籍的I/O章节。就明白了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯