IO尼亚,昂扬不灭

15.1        输入/输出流 
流是一组有序得数据序列,根据操作得类型,可分为输入流和输出流两种。

I/O(Input/Output,输入,输出)流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。

15.1.1输入流
InputStream类是字节输入流得抽象类,它是所有字节输入流得父类。InputStream类得具体层次结构如图15.3所示.

15.1.2输出流

OutputStream类是字节输出流得抽象类,此抽象类是表示输出字节流得所有类得超类。

OutputStream类得具体

15.2File类
例题1
package 十五;
import java.io.File;
public class filetest {
    public static void main(String[] args) {
        File f =new File("D:\\word.txt");    //创建文件对象
        if(f.exists()) {        //如果该文件存在
            f.delete();        //将文件删除
            System.out.println("文件已删除");
        }else {        //如果文件不存在
            try {        //try语句捕捉可能出现得异常
                f.createNewFile();        //创建该文件
                System.out.println("文件已经创建");
            }catch(Exception e) {
                e.printStackTrace();    //输出异常性质
        }}}}
例题2
package 十五;
import java.io.File;
import java.io.IOException;
public class filetest {
    public static void main(String[] args)throws IOException {
        File f =new File("D:\\word.txt");    //创建文件对象
        if(f.exists()) {        //如果该文件存在
            String name =f.getName();//获取文件名称f.createNewFile();        //创建该文件
            System.out.println("文件已经创建");
            long length =f.length();//获取文件长度
            boolean hidden =f.isHidden();//判断文件是否为隐藏文件
            System.out.println("文件名称:"+name);
            System.out.println("文件长度是:");
            System.out.println("该文件是隐藏文件吗?");
        }else {
            f.createNewFile();        //创建该文件
            System.out.println("文件已经创建");
        }
            
            f.delete();        //将文件删除
            System.out.println("文件已删除");}}

文件名称:word.txt
文件长度是:0
该文件是隐藏文件吗? false

15.2.1文件得创建与删除

15.2.2获取文件信息

File类提供了很多方法获取文件本身的信息,其中常用的方法如表

15.3文件输入/输出流
程序运行期间,大部分数据都在内存中进行操作,当程序结束或关闭时,这些数据将消失。如果需要将数据永久保存,可使用文件输入/输出流与指定的文件建立连接,将需要的数据永久保存到文件中。

15.3.1FileInoutSteream与FileOutputStream类
例题3
package 十五;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class FileStreamDemo {
    public static void main(String[] args)throws IOException {
    File file =new File("D:\\word.txt");    //创建文件对象
    FileOutputStream out =new FileOutputStream(file);    //创建输出流
    byte[] by= "Hello world".getBytes();    //写入内容的字节数组
    out.write(by);    //将字节写入文件中
    out.close();    //关闭流
 
    FileInputStream in =new FileInputStream(file);    //创建输入流
    byte[] by1= new byte[1024];    //缓存字节数组
    int len =in.read(by1);    //将文件信息读入缓存数组中
    System.out.println(new String(by1,0,len));    //将字节转为字符串输出
    in.close();    //关闭流
    }}

15.3.2FileReader和FileWriter类
FileReade类he FileWriter类对应了FileInputStream类和FileOutStream类。FileWriter类顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余内容,知道源的末尾或流被关闭。

15.4带缓存得输入/输出流
例题4
package 十五;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
public class FileReaderDemo {
    public static void main(String[] args) throws IOException{
        File file =new File("D:\\word.txt");    //创建文件对象
        FileWriter writer =new FileWriter(file);    //创建输出流
        char[] ch =new char[] {'h','a','o','!'};    //写入内容的字节数组
        writer.write(ch);    //将字节写入文件中
        writer.close();    //关闭流
        
        FileReader reader =new FileReader(file);
        char[] ch1 =new char[1024];
        int len =reader.read(ch1);
        System.out.println(new String (ch1,0,len));
        reader.close();    //关闭流
    }
}
 

15.4.1BufferedInputStream与BufferedOutputStream类
BufferedInputStream类可以对所有InputStream类进行带缓存区的包装以达到性能的优化。

BufferedInputStream类有两个构造方法:

15.4.2BufferedReader与BufferedWriter类
BufferedReader类常用方法如下:
read()方法:读取单个字符。
readLine()方法:读取一个文本行,并将其返回为字符串。若无数据可读,则返回null。
BufferedWriter类的方法都返回void。常用方法 
writer(String s,int off,int len)方法:写入字符串的某一部分.
flush()方法:刷新该流的缓存。
newLine()方法:写入一个行分隔符。
 例题5

package fifte;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class DataStreamDemo {
 
    public static void main(String[] args) throws IOException {
        File file =new File("D:\\word.txt");
        FileOutputStream fos=new FileOutputStream(file);
        DataOutputStream dos=new DataOutputStream(fos);
        dos.writeBoolean(false);
        dos.writeUTF("你好世界");
        dos.writeDouble(13.35);
        dos.close();
        fos.close();
        FileInputStream fis=new FileInputStream(file);
        DataInputStream dis=new DataInputStream(fis);
        System.out.println(dis.readBoolean());
        System.out.println(dis.readUTF());
        System.out.println(dis.readDouble());
        dis.close();
        fis.close();
    }
        
}

15.5数据输入/输出流
分别通过DataOutStream类的writeUTF()、writeDouble()、riteInt()和writeBoolean()方向指定的word.txt文件写入不同类型的数据,并通过DataIntputStream类的相应方法将写入的数据输出刀控制台上。

例题6
import java.io.*;
import java.io.File;
 
public class DataStreamDemo {
    public static void main(String[] args)  {
        File file = new File("D:\\word.txt");
        try {
            FileOutStream fos =new FileOutStream(file);
            DataOutStream dos =new DataOutStream(fos);
            dos.writeUTF("使用UTF()方法写入数据");
            dos.writeDouble(19.8);
            dos.writeInt(298);
            dos.writeBoolean(true);
            dos.close();
            fos.close();
            
            FileInputStream fis =new FIleInputStream(file);
            DataInputStream dis = new DataInputStream(fis);
            System.out.println("UTF"+dis.readUTF());
            System.out.println("Double"+dis.readDouble());
            System.out.println("Int"+dis.readInt());
            System.out.println("Boolean"+dis.readBoolean());
            dis.close();
            fis.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
}}

结果

readUTF 方法读取数据:使用writeUTF()方法写入数据
readDouble方法读取数据:19.8
readInt 方法读取数据:298
readBoolean方法读取数据:true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值