IO流

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"));

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容