io流

Java基础之IO流整理

匿名 (未验证) 提交于 2019-12-02 21:45:52
Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽象基类 字节流:InputStream,OutputStream. 输出流方法: close(), flush(), write(int b), write(byte[] b), write(byte[] b, int off, int len) 输入流方法: close(), abstract int read(), int read(byte[] b) 子类(非装饰流):文件流:FileOutputStream,FileInputStream. 构造方法: FileOutputStream(File file),FileOutputStream(String filename) 构造方法可以添加第二个布尔参数设置是否为追加模式 子类(装饰流):序列化流:ObjectOutputStream,ObjectInputStream 构造方法: ObjectOutputStream(OutputStream out), ObjectInputStream(InputStream in) 输入流序列化方法: writeObject (Object obj) 输出流反序列化方法: readObject () 子类

Java的IO流

匿名 (未验证) 提交于 2019-12-02 21:38:03
在Java中,把不同的输入/输出源(键盘、文件、网络连接等)中的有序数据抽象为流(stream)。 stream(流)是从起源(source)到接收(sink)的有序数据。 通过流的方式,Java可以使用相同的方式来访问、操作不同类型的输入/输出源,不管输入、输出节点是磁盘文件、网络连接,还是其他的IO设备,只要将这些节点包装成流,我们就可以使用相同的方式来进行输入、输出操作。 原本进行文件读写要用文件读写的一套方法,进行网络读写要用网络读写的一套方法.....不同类型的IO节点,用的方法体系不同,要单独写代码。 java统一了不同类型节点的IO操作,都把输入、输出节点包装成流,使用一套方法就可以进行文件读写、网络读写等不同类型节点的读写,不必单独写代码,从而简化了IO操作。 流的分类: 1、按流的方向分: 输入流:从磁盘、网络等读取到内存,只能读,不能写。 输出流:从内存写出到磁盘、网络,只能写,不能读。 2、按操作的数据单元分: 字节流:以字节为基本操作单位 字符流:以字符为基本操作单位 字节流、字符流的用法基本一样,只是操作的数据单元不同。 3、按照流的角色来分: 节点流:向某个IO设备/节点(磁盘文件、网络等)直接读写数据,也称为低级流。 处理流:用于包装一个已存在的流,通过这个已存在的流来进行读写操作,并不直接操作IO节点,也称为高级流、包装流。

IO流的原理和概念

匿名 (未验证) 提交于 2019-12-02 21:35:18
在程序中如何读写文件?不同的编程语言有不同的方式,而 JAVA 则提出了“流”的概念,通过“流”来读写文件 什么是流: 流(Stream)是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道,数据源发送的数据经过这个通道到达目的地,按流向区分为输入流和输出流 什么是输入流: 数据流 进入 (InputStream) 什么是输出流: 目的地(OutputStream) 输入输出流是相对于计算机内存来说的,而不是相对于数据源和目的地 按处理数据单元又可分为字节流和字符流,字节流是 8 位通用字节流,字符流是 16 位 Unicode 字符流 字节流用于处理传输文件、图片、音频、视频之类的数据,也可以处理传输经过编码成字节的字符串文件 字符流用于处理传输字符和字符串文件 什么是数据源: 数据源(DataSource)是提供原始数据的原始媒介,常见的:数据库、文件、其他程序、内存、网络连接、IO设备等 数据源就像水箱,流就像水管中流着的水流,程序就是我们最终的用户 流是一个抽象、动态的概念,是一串连续动态的数据集合 什么是目的地:存储:U/ 文章来源: IO流的原理和概念

Java IO流之字符流

匿名 (未验证) 提交于 2019-12-02 20:59:24
1.字符输出流 Writer(只能写入文本文件) 1.1FileWriter类(writer的子类) 构造方法: public class FileWriterDemo { public static void main ( String [] args ) throws IOException { //演示FileWriter 用于操作文件的便捷类。 FileWriter fw = new FileWriter ( "d:\\text\\fw.txt" ); fw . write ( "你好谢谢再见" ); //这些文字都要先编码。都写入到了流的缓冲区中。 fw . flush (); //如果不刷新,数据不会到达目的地     //写一个字符数组     char[] c = {'a','b','c','d','e'};      fw.write(c);      fw.flush();     //写数组一部分      fw.write(c,2,2);      fw.flush(); fw . close (); } } //flush():将流中的缓冲区缓冲的数据刷新到目的地中,刷新后,流还可以继续使用。//刷新内存,将内存中的数据立刻写出。 //在最后工作完成时调用close()也可以刷新内存//flush() 与 close() 区别在于 close()会关闭流

java IO流面试总结

匿名 (未验证) 提交于 2019-12-02 20:37:20
java IO流面试总结 2017年08月08日 11:48:51 阅读数:10613 1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别 答案 Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1 Byte是计算机操作数据的最小单位由8位bit组成 取值(-128-127) Char是用户的可读写的最小单位,在 Java 里面由16位bit组成 取值(0-65535) 8个字节 是给计算机看的 2.什么是流,按照传输的单位,分成哪两种流,并且他们的父类叫什么流是指数据的传输 答案 字节流:InputStream OutputStream 字符流:Reader Writer 3.流按照传输的方向可以分为哪两种,分别举例说明 答案 输入输出相对于程序 输入流InputStream ,输出流OutputStream 4.按照实现功能分为哪两种,分别举例说明 答案 节点流,处理流 节点流:OutputStream 处理流: OutputStreamWriter 5.BufferedReader属于哪种流,它主要是用来做什么的,它里面有那些经典的方法 答案 属于处理流中的缓冲流,可以将读取的内容存在内存里面,有readLine()方法 6.什么是节点流,什么是处理流,它们各有什么用处,处理流的创建有什么特征 答案 节点流

IO流15 --- 对象流操作字符串 --- 技术搬运工(尚硅谷)

一个人想着一个人 提交于 2019-12-02 14:56:44
序列化 @Test public void test12() throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.dat")); oos.writeObject(new String("白发渔樵江渚上")); oos.close(); } 反序列化 @Test public void test13() throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.dat")); Object o = ois.readObject(); System.out.println(o); ois.close(); } 来源: https://www.cnblogs.com/noyouth/p/11751190.html

Java学习笔记之IO流

柔情痞子 提交于 2019-12-02 11:20:56
IO : input ouput 流 相对于java(内存) File: 文件,是JAVA中的对象,用来映射硬盘中的文件或者目录 注意:java中‘ \ ’是转义字符,所以‘ \\ ’才能表示目录 File常用方法: 1 File file=new File("D:\\File\\a"); 2 System.out.println("此抽象路径名表示的文件是否可执行---->"+file.canExecute()); 3 System.out.println("此抽象路径名表示的文件是否可读---->"+file.canRead()); 4 System.out.println("此抽象路径名表示的文件是否可写---->"+file.canWrite()); 5 System.out.println("此抽象路径名表示的文件是否存在---->"+file.exists()); 6 System.out.println("此抽象路径名表示的文件是否是一个目录---->"+file.isDirectory()); 7 System.out.println("此抽象路径名表示的文件是否是一个文件---->"+file.isFile()); 8 System.out.println("此抽象路径名表示的文件是否是一个隐藏文件---->"+file.isHidden()); 9 System

文件批量生成IO流读写

Deadly 提交于 2019-12-02 05:02:48
/// <summary> /// 生成文件的 /// </summary> /// <param name="calssName"></param> public void create(string calssName) { //获取程序集 var createClass = Assembly.Load("CloudInnovate.Backstage.Entity"); //反射出所有的类 List<Type> ts = createClass.GetTypes().ToList(); //循环生成 ts.ForEach(x => { //x.Namespace获取命名空间 var ss = "using " + x.Namespace + ";\n" + "using CloudInnovate.CoreFramework."+ calssName+";\n" + "using System;\n" + "using System.Collections.Generic;\n" + "using System.Text;\n\n" + "namespace CloudInnovate.Backstage.I" + calssName + "\n" + "{\n" + "\tpublic interface I" + x.Name.Substring(0, x.Name

IO流13 --- 转换流实现文件复制 --- 技术搬运工(尚硅谷)

 ̄綄美尐妖づ 提交于 2019-12-02 03:03:40
InputStreamReader 将字节输入流转换为字符输入流 OutputStreamWriter 将字符输出流转换为字节输出流 @Test public void test2() { //转换流 InputStreamReader isr = null; OutputStreamWriter osw = null; try { //节点流 FileInputStream fis = new FileInputStream("水浒传.txt"); FileOutputStream fos = new FileOutputStream("水浒传_gbk.txt");         //转换流 isr = new InputStreamReader(fis, "utf-8"); osw = new OutputStreamWriter(fos, "gbk"); //复制文件 char[] cbuf = new char[20]; int len; while ((len = isr.read(cbuf)) != -1) { osw.write(cbuf, 0, len); } System.out.println("复制成功"); } catch (Exception e) { e.printStackTrace(); } finally { if(osw != null) {

java笔试题大全之IO流常见选择题

两盒软妹~` 提交于 2019-12-01 18:26:40
1.下面哪个流类属于面向字符的输入流()选择一项) A. BufferedWriter B. FileInputStream C. ObjectInputStream D. InputStreamReader 答案:D 分析:A:字符输出的缓冲流 B:字节输入流 C:对象输入流 2.要从文件”file.dat”文件中读出第10个字节到变量c中,下列哪个正确()(选择一项) A. FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read(); B. FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read(); C. FileInputStream in=new FileInputStream("file.dat"); int c=in.read(); D. RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(7); int c=in.readByte(); 答案:A 分析: skip(long n)该方法中的n指的是要跳过的字节数 3.新建一个流对象,下面那个选项的代码是错误的?() A. new