java 我的笔记

在整个java.io包里面,File类是唯一一个与文件本身操作有关的类,但是不涉及到文件的具体内容。所谓的文件本身指的是文件的创建、删除等操作。

如果要想使用file类,那么首先就需要通过它提供的构造方法定义一个要操作文件的路径:

1、  设置完整路劲:publicFile(String pathname),大部分情况下使用此操作;

2、  设置父路径与子文件路径:publicFile(File parent,String child),在Android上使用比较多

以上的程序已经完成了具体的文件创建与删除的操作,但是此时的程序会存在有两个问题:

         在进行java.io操作的过程之中,会出现有延迟情况,因为现在的问题是java程序是通过jvm间接的调用操作系统的文件处理函数进行的文件处理操作,所以中间会出现延迟情况

此时的确是已经可以列出目录中的内容了,但是所列出来的是子目录下的子目录火文件的名字。

范例:列出全部的file类对象

列出所有子路径

删除目录

3、File类虽然可以操作文件,但是并不是操作文件的内容,如果要进行内容操作只能通过两种途径完成:字节流、字符流。

对于java.io包而言它定义了两类流:

 

最有意思的是在JDK1.7的时候引入了一个非常神奇的自动关闭机制,所以让Closeable又多继承了一个AutoCloseable接口,这个接口定义如下:

但是OutputStream类是在JDK1.0的时候就提供的,这个类原本就定义了close()flush()两个操作方法,所以现在以上的两个接口就几乎可以忽略了。

OutputStream类里面一共提供有三个输出的方法:

1、输出单个字节:public abstract void write(int b) throws IoException;

2、输出全部字节数组:piblic void write(byte[] b) throws IOException;

3、输出部分字节数组:public void write(byte[] b,int off,int len) throws IOException;

Outputstream本身是属于抽象类,如果想要为抽象类进行对象的实例化操作,那么一定要使用抽象类的子类,本

对于要进行的是文件操作所以可以使用FileOutputstream子类。在这个子类里面定义有如下的构造方法:

1、创建或覆盖已有文件:public FileOutputStream(File file) throws FileNotFoundException;

2、文件内容追加:public FileOutputStream(File file,Boolean append) throws FileNotFoundException

采用单个字节方式输出

输出部分字节数组内容

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.4、字符输入流:Reader

与字节输入流相比结构几乎是一样的,只是数据类型由byte更换为了char而已。

字节流与字符流的区别?

现在已经给出了两种数据流,那么开发之中到底使用哪一种?有什么区别?

字节流与字符流最大的区别是:字节流直接与终端进行数据交换,字符流需要将数据经过缓冲区处理后才可以输出。

在使用outputStream输出数据的时候即使最后没有关闭输出流,那么内容也可以正常输出,但是反过来如果使用的

是字符输出流,如果不关闭,那么就表示在缓冲区之中处理的内容不会被强制性的清空,所以就不会清空数据

在开发之中,对于字节数据处理比较多的,例如:图片、音乐、电影、文章,而对于字符流最大的好处是它可以进行中文的有效处理,那么在日后开发之中,如果要处理中文的时候请先优先考虑字符流,如果没有中文问题,建议使用字节流。

总结:

时间: 2024-10-14 03:02:29

java 我的笔记的相关文章

《深入Java虚拟机》笔记:指令集 (转)

<深入Java虚拟机>笔记:指令集 指令 含义 iconst_m1 把int型常量-1压入栈中 iconst_0 把int型常量压入栈中 fconst_1 把float型常量1压入栈中 lconst_2 把long型常量2压入栈中 dconst_3 把double型常量3压入栈中 bipush byte1 把byte1转换成int型压入栈中 sipush byte1,byte2 把byte1,byte2组成的short转换成int压入栈中 aconst_null 把空对象压入栈中 ldc in

java nio学习笔记(一)

位置保留,待用 java nio学习笔记(一),布布扣,bubuko.com

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(

java排序学习笔记

前面写了js的排序实现,总得玩玩java的哈. 同样,冒泡.选择.快速(这三个之前实现过也写过文章).堆排序,然后做比较. 主要遇到的难点: - -||想轻松点写个封装计时的逻辑,不想每调用一个排序就要写一个计时代码.想想,还是javascript写起来方便: java的话,我想到的方法是写一个抽象类:抽象出排序方法,实现一个排序计时方法(该方法调用了抽象排序,但在先后排序时加入计时代码[感觉像是aop操作]): 接着所有排序类都继承这个抽象类,并实现排序方法,调用的时候直接调用继承的排序计时方

JAVA代码规范笔记(下)

声明 17.推荐一行一个声明,因为这样有利于写注释.换句话说,下面的声明方法中, int level; // indentation level int size; // size of table 要优于: int level, size; 绝对不要将变量和方法的声明放在同一行,例如: long dbaddr, getDbaddr(); // WRONG! 不要将不同类型的变量的声明放在同一行,例如: int foo, fooarray[]; //WRONG! 注意:上面的例子中,变量与标识符

《深入Java虚拟机学习笔记》- 第4章 网络移动性

Java虚拟机学习笔记(四)网络移动性 <深入Java虚拟机学习笔记>- 第4章 网络移动性,布布扣,bubuko.com

《深入Java虚拟机学习笔记》- 第7章 类型的生命周期

一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令,或者通过不明确的创建.反射.克隆和反序列化): 当调用某个类的静态方法时(即在字节码中执行invokestatic指令): 当使用某个类或接口的静态字段,或者对该字段赋值时(用final修饰的静态字段除外,它被初始化为一个编译时常量表达式): 当调用Java API中的某些反射方法: 当初始化某个

《深入Java虚拟机学习笔记》- 第13章 逻辑运算

<深入Java虚拟机学习笔记>- 第13章 浮点运算 <深入Java虚拟机学习笔记>- 第13章 逻辑运算,布布扣,bubuko.com

《深入Java虚拟机学习笔记》- 第12章 整数运算

Java虚拟机提供几种进行整数算术运算的操作码,他们执行基于int和long类型的运算.当byte.short和char类型值参与算术运算时,首先会将它们转换为int类型.这些操作码都不会抛出异常,溢出在这里通常可以被忽略. 整数加法 操作码 操作数 说明 iadd (无) 从栈中弹出两个int类型数,相加,然后将所得int类型结果压回栈 ladd (无) 从栈中弹出两个long类型数,相加,然后将所得long类型结果压回栈 将一个常量与局部变量相加 操作码 操作数 说明 iinc vindex

《深入Java虚拟机学习笔记》- 第2章 平台无关

Java虚拟机学习笔记(二)平台无关 <深入Java虚拟机学习笔记>- 第2章 平台无关,布布扣,bubuko.com