IO流

作者: beatsl | 来源:发表于2017-08-15 17:34 被阅读0次

IO流:异常,File,递归

异常:Throwable

严重问题:Error

问题:Exception分为:编译时期异常(不是Runtime~~异常):必须处理运行期异常(Runtime~~):代码不够严谨

出现异常时候,如果我们没处理,最终jvm会默认的处理把异常的名称,原因及出现问题等信息输出在控制台。同时结束程序处理:

A.try...catch...finally处理格式:

try{

可能出现问题的代码;

}catch(异常名变量)

{

针对问题的处理

;}finally{

释放资源

;}

注意try里面的代码越少越好,catch必须有内容可以多写,能明确异常最好不能就末尾catch个父类finallly:被finally控制的语句体一定会执行

B.抛出throws 异常类名

注意;这个格式必须跟在方法的括号后面

A.B.中:能自己处理用try不能用throws,后续程序要运行用try否用throws

自定义异常:子类<父类,子类不能扩展,子类有异常父类没有的时候不能抛出只能try继承Exception

RuntimeException

File:对文件和目录路径进行抽象表示。

构造方法:

File(String pathname):根据一个路径得到File对象  

     (String parent,String child):根据一个目录或一个子文件/文件夹,得到File对象  

       (File parent,String child)

删除功能:

public boolean delete()不走回收站

重命名功能:

public boolean renameTo(File dest);

判定功能:

public boolean isDirectory()判定是否是目录

                          isFile()判定是否是文件      

                          exists()存在     

                          canRead()可读   

                          canWrite()可写     

                           isHidden()隐藏

基本获取功能:

public String getAbsolutepath()获取绝对路径

                       getpath()相对     

                       getname()名称      

                        long lenth()字节个数 

                        long lastModified()获取最后一次修改时间

高级获取功能:

public Stirng[] list()获取指定目录下的文件和目录名称数组

public File[] listFiles():                                                File数组

过滤器:

public String[] list(FilenameFilter filter)实现FilenameFilter接口重写accept方法

public File[] listFiles(     

 递归:方法中调用自己  分解法,合并法

注意事项:一定要有出口,次数不要太多,构造方法不能递归  

IO流:

按流向分:输入流,输出流

数据类型:字节流,字符流 

字节流:InputStream      

                OutputStream

字符流:ReaderWriter

 OutputStream:写入三步骤如下

构造方法:

FileOutputStream(File file,true);加true追加写入

                               (String name);

写入方法

write(Byte[]byte);

释放方法:

close();

InputStream:

构造方法:

FileInputStream(File file);

读取方法:

int read();读取一个

int read(byte[] b,Start,end):读取一个字节数组,int返回读取数,值赋予给b

释放方法:

close();

BufferedOutputSrteam:

构造方法:

BufferedOutputSrteam(OutputStream out)

编码:

解码

String (byte[] bytes, String charsetName);通过字符集解码字节数组

编码

byte[] getBytes(String charsetName)

编码:把看的懂的变成看不懂的

解码:把看不懂的变成看得懂的

字符流:

OutputStreamWriter(OutputStream out):根据默认编码把字节流的数据转换为字符流  

OutputStreamWriter

flush()强行写入

 int read():读取一个字符 

 int read(char[] chs):读取一个字符数组

简化:FileWriter;

字符缓冲流:BuffereWriter;

特殊功能:BuffereWriter:注意:true

public void newLine();根据系统来决定换行符

BuffereReader:

public String readLine();一次读取一行数据 PS:读不到返回null

LineNumberReaderDemo:父亲是bufreader;

publie int getLineNumber():获取当前行号

public void setLineNumber(int line):设置从几开始行号

了解:

数据输入输出流:DataOutputStream 基础数据操作

内存操作流:临时处理,释放close没意义

字节数组:ByteArrayInputStream

字符数组:CharArrayReader

字符串:StringReader

打印流:只能操作目的地,只能写数据,可以操作任意类型数据(调用print打印),自动刷新PrintWritor

字节打印流:PrintStream

字符打印流:PrintWriter

开启自动刷新:new PrintWriter(new File(),true)写入的时候用println替代print打印。

标准输入流:实现控制器输出或输入的时候通过bufferedR/W来实现

public static final InputStream in  InputStream is=System.in; 

                             PrintStream out  PrintStream ps=System.out;

随机访问流:随机访问文件的行为RandomAccessFile不属于流

构造方法:RandomAccessFile(String name/File file,String mode)mode表示为(r只读,rw读写)

合并流:一般是a->b合并用法是a+c->b

SequenceInputStream(InputStream s1,InputStream s2)

合并多个用枚举:vector->Enumeration<> **=v.elements();

序列化流/对象操作流:

(写)把对象按照流一样的方式存入文本文件或者在网络中传输。把对象当流操作

new ObjectOutputStream(new FileOutputStream())

writeObject(Object obj)

对象必须实现Serializable接口(标记接口)

(读)反序列化:流->对象

注意定义Serializable ID. ,使用transient修饰的变量将不会被ID序列化。

properties(作为map集合来使用):属性集合类,可以和IO流相结合使用类,可以保存流中加载的键和值。

public Object setProperty(String key,String value)添加元素   

           String get                (String key)获取元素    

           setstringPropertyNames()获取所有键的集合

与IO流使用:

public void load(Reader reader):把文件中的数据读取到集合中

public void store(Writer writer,String comments)把集合的数据储存到文件,com文件注释

NIO包写的IO流:在内存中操作。

JDK7IO改变:

path:路径

paths:有一个静态方法返回路径

public static path get(URI uri)

Files:提供了静态方法,操作文件工具类

public static long copy(Path source,OutputStream out)

public static Path write(paths.get("array.txt"), array,Charset.forName("GBK"));

相关文章

  • java基础-day20-IO流和StringBuffer

    IO流和StringBuffer 1. IO流 1.1 IO流概述 1.2 IO流分类 1.3 文件操作输入输出字...

  • Java之IO流详解

    title: Java之IO流详解tags: Java IO流categories: Java IO流 大多数应用...

  • 15_IO流

    IO流介绍 IO流是一个流水模型:IO理解成水管,把数据理解成水流 IO流的分类:按照流的方向分为:输入流、输出流...

  • IO流

    一、IO流 1.1 IO的概述 IO流介绍 IO:输入/输出(Input/Output) 流:是一种抽象概念,是对...

  • java io 流

    java io 流 io 流总览 io 流主要提供四个接口 InputStream: 输入字节流 OutputSt...

  • Java IO流(一)

    IO(Input Output)流的概述 下面给出IO流的基本概述,这样可以对IO流有一个宏观上的基本了解。 IO...

  • IO流

    一、IO流的概述: 二、IO流的分类: 三、字节缓冲流: 四、字符缓冲流: 五、转换流(把字节流转换为字符流): ...

  • IO流

    IO流的使用 今天咱们来说一下JAVA中最常用的数据处理的流 IO 流,说到IO啊,玩DOTA的小伙伴们就有声音...

  • IO流

    大家好,我是IT修真院深圳分院java第4期学员,一枚正直善良的java程序员。今天给大家分享一下,Java简单的...

  • IO流

    Input Output 输入流和输出流,字节流和字符流

网友评论

      本文标题:IO流

      本文链接:https://www.haomeiwen.com/subject/ubsvrxtx.html