第三周预习:JavaIO

输入、输出流

File类

File的对象主要用来获取文件本身的一些信息,例如文件所在目录、文件的长度或文件读写权限等,不涉及对文件的读写操作。

构造方法
File (String filenname);//filename 是文件名字
File (String directoryPath,String filename);//diretoryPath 是文件路径
File (File dir,String filename);//dir 为一个目录
文件的属性(File类方法)
  • public String getName() 获取文件的名字。
  • public boolean canRead()判断文件是否是可读的。
  • public boolean canWrite()判断文件是否可被写入。
  • public boolean exists()判断文件是否存在。
  • public long length()(获取文件的长度(单位是字节)。
  • public Sring getAbsolutePath()获取文件的绝对路径。
  • public Sring getParent()获取文件的父目录。
  • public boolean isFile()判断文件是否是一个普通文件, 而不是目录。
  • public boolean isDirectory()判断文件是否是一个目录。
  • public boolean isHidden()判断文件是否是隐藏文件。
  • public long lastModified()获取文件最后修改时间。
目录

创建目录

public boolean mkdir ();

列出目录中的文件

  • public String[ ] list()用字符串形式返回目录下的全部文件。
  • public File [ ] listFiles()用File对象形式返回目录下的全部文件。

有时需要列出目录下指定类型的文件,比如java. .xt 等扩展名的文件。可以使用File类的下述两个方法,列出指定类型的文件:

  • public String list (FilenameFilter obj)方法用字符串形式返回目录下的指定类型的所有文件。
  • public File [] listFiles (FilenameFiter obj)该方法用File对象形式返回目录下的指定类型的所有文件。
文件的创建与删除
public boolean createNewFile (); //创建文件
file.delete ();//文件对象调用方法public boolean delete()删除当前文件
运行可执行文件
Runtime ec; //使用Runtime类声明一个对象
ec = Runtime.getRuntime ();//使用该类的getRuntime()静态方法创建这个对象
//ec 可以调用exec(String command)方法打开本地机器上的可执行文件或执行一个操作

文件字节输入流

构造方法
FileInputStream (String name);
FileInputStream (File file);
使用输入流读取字节

文件字节流可以调用从父类继承的read方法顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取文件中的其余内容,直到文件的末尾或文件字节输入流被关闭。

  • int read() 输入流调用该方法从源中读取单个字节的数据,该方法返回字节值(0~255之间的一个整数), 如果未读出字节就返回-1。
  • int read(byte b[]) 输入流调用该方法从源中试图读取b.length个字节到字节数组b中,返回实际读取的字节数目。如果到达文件的末尾,则返回-1。
  • int read(byte b[ ], int off, int len) 输入流调用该方法从源中试图读取len个字节到字节数组b中,并返回实际读取的字节数目。如果到达文件的末尾,则返回-1,参数off指定从字节数组的某个位置开始存放读取的数据。
关闭流

输入流都提供了关闭方法close()。

文件字节输出流

构造方法
FileOutputStream (String name);
FileOutputStream (File file);
使用输出流写字节

文件字节流可以调用从父类继承的write方法顺序地写文件。FileOutStream流顺序地向文件写入内容,即只要不关闭流,每次调用write方法就顺序地向文件写入内容,直到流被关闭。

  • void write(int n) 输出流调用该方法向目的地写入单个字符。
  • void write(byte b[ ]) 输出流调用该方法向目的地写入一个字节数组。
  • void write(byte b[ ], int off, int len)给定字节数组中起始于偏移量off处取len个字节写到目的地。
  • void close()关闭输出流。
关闭流

关闭方法close()。

文件字符输入、输出流

构造方法
FileReader (String filenmae);FileReader (File filename);
FileWriter (String filename);FileWriter (File filename);
FileWriter (String filename, boolean append);
FileWriter (String filename,boolean append);

缓冲流

BufferedReader和BufferedWriter 类创建的对象成为缓冲输入、输出流,二者增强了读写文件的能力。

构造方法
BufferedReader (Reader in);
BufferedWriter (Writer out);

BufferedReader流能够读取文本行,方法是readLine()。

FileReader inOne = FileReader ("Student.txt");
BufferedReader inTwo = BufferedReader (inOne)
String strLine = inTwo.readLine ();
// intwo流调用readLine()方法中读取Student.txt。
FileWriter tofile = new FileWriter ("hello.txt");
BufferedWriter out = BuuferedWriter (tofile);
//将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写到目的地。

out使用BufferedReader类的方法write(String s,int off,int len)把字符串s写到hello.txt中,参数off是s开始处的偏移量,len是写入的字符数量。
BufferedWriter流有一个独特的向文件写入一个回行符的方法
newline();

随机流

RandomAccessFile类创建的流称作随机流,RandomAccessFile类创建的流的指向既可以作为流的源,也可以作为流的目的地。当准备对一个文件进行读写操作时,创建一个指向该文件的随机流即可,这样既可以从这个流中读取文件中的数据。

构造方法
RandomAccessFile (String name,String mode);
RandomAccessFile (File file,String mode);
//参数mode取r(只读)或rw(可读写),决定创建的流对文件的访问权利。

数组流

字节数组流

字节数组输入流ByteArrayInputStream和字节输出流ByteArrayOutputStream分别使用字节数组作为流的源和目的地。

构造方法
ByteArrayInputStream (byte [] buf);
//源是参数buf指定的数组的全部字节单元
ByteArrayInputStream (byte [] buf,int offset,int length);
//源是buf指定的数组从offset处按顺序取的length个字节单元

字节数组输入流调用public int read();方法可以顺序地从源中读出一个字节,该方法返回读出的字节值。
调用public int read(byte[] b,int off,int len);方法可以顺序地从源中读出参数len指定的字节数,并将读出的字节存放到参数b指定的数组中,参数off指定数组b存放读出字节的起始位置,该方法返回实际读出的字节个数。

ByteArrayOnputStream ();
//字节数组输出流指向一个默认大小为32字节的缓冲区,如果输出流向缓冲区写入的字节个数大于缓冲区时,缓冲区的容量会自动增加
ByteArrayOnputStream (int size);
//字节数组输出流指向的缓冲区的初始大小由参数size指定,如果输出流向缓冲区写入的字节个数大于缓冲区时,缓冲区的容量会自动增加。

字节数组输出流调用public void write(int b);方法可以顺序地向缓冲区写入一个字节。
调用public void write(byte[] b,int off,int len);方法可以将参数b中指定的len个字节顺序地写入缓冲区,参数off指定从b中写出的字节的起始位置。
调用public byte[] toByteArray0;方法可以返回输出流写入到缓冲区的全部字节。

字符数组流

与字节数组流对应的是字符数组流CharArrayReader和CharArrayWriter类,字符数组流分别使用字符数组作为流的源和目标。

数据流

DateInputStream和DateOutStream类创建的对象称为数据输入流和数据输出流。

构造方法

DateInputStream(InputStream in)创建的数据输入流指向一个由参数in指定的底层输入流。
DatacInputStream(OutputStream out)创建的数据输出流指向一个由参数out指定的底层输出流。

对象流

ObjectInputStream和ObjectOutputStream类创建的对象称为对象输入流和对象输出流。对象输出流使用writeObject(Object obj)方法将一个对象obj写入到一个文件没对象输入流使用readObject()读取一个对象到程序中。

构造方法
ObjectInputStream(InputStream in);
ObjectOutputStream(OutputStream out);

ObjectOutputStream的指向应当是个输出流对象, 因此当准备将一个对象写入到文件时,首先用OutputStream的子类创建个输出流, 例如用FileOutputStream创建一个文件输出流,如下列代码所示:

FileOutputStream fileOut  = new FileOutputstream ("tom.txt");
ObjectOutputStream objectOut = new ObjectOutputStream (fileout);

同样ObjctInputStream的指向应当是个输入流对象,因此当准备从文件中读入个对象到程序中时,首先用lnputStream的子类创建一个输 入流,例如用FlieInputStream创建一个文件输入流,如下列代码所示:

FlleInputStream fileIn = new FileInputStream ("tom. txt");
ObjectInputStream objectIn = new ObjectInputStream (fileIn);

使用Scanner解析文件

使用默认分隔标记符解析文件
File file = new File (""hello.java);
Scanner sc = new Scanner (file);
使用正则表达式作为分隔符标记解析文件
File file = new File ("hello.java");
Scanner sc = new Scanner (file);
sc.useDelimiter (正则表达式);

sc可以调用nextInt()或nextDouble()方法将数字型单词转化为int或double数据返回。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值