java的流与文件知识点整理

流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候就可以想象数据好像在这其中“流动”一样。

可以读取字节序列的对象称为输入流,可以写入字节序列的对象称为输出流。

数据流的类可以分为字节流( byte stream )和字符流( character stream )两种类型,分别由
四个抽象基类来表示。字节流的基类有抽象类InputStream和OutputStream,字符流的基类有抽象类Reader和Writer。

以InputStream的读取为例,主要方法有:

int read(byte b[]) 把字节读到数组b 中,并返回实际读入的字节数

long skip(long n) 跳过输入数据流中n个字节的数据,并返回实际跳过的字节数

abstract int read() 读取下一个字节并返回它的整数表示

对某些流来说,可以从文件或者其他地方读入字节,而对另一些流来说,它们则可将字节“组装”成更有用的数据类型。通过将一个现成的流传递给另一个流的构造器来综合运用这两种流,可以将其合并成所谓的“过滤流”。

例如:为了能从文件中读取数字,首先要创建一个FileInputStream对象,然后将其传递给一个DataInputStream的构造器

FileInputStream fin = new FileInputStream("employee.dat");
DataInputStream din = new DataInputStream(fin);
double s = din.readDouble();

数据流支持读取和写入基本 Java 类型的方法。

// 为文件 in.dat 创建一个输入流
DataInputStream infile = new DataInputStream(new FileInputStream("in.dat"));
// 为文件out.dat 创建一个输出流
DataOutputStream outfile = new DataOutputStream(new FileOutputStream("out.dat"));

文本输出可以使用PrintWriter

import java.io .*;
class Test
{ 
  public static void main(String [] args ) throws IOException
  { 
  FileOutputStream fos = new FileOutputStream("employee.txt");
  PrintWriter pw = new PrintWriter(fos);
  pw.println(100);
  pw.println("abc");
  pw.println(false);
  pw.flush();
  pw.close();
  fos.close();
  }
} 

而文本输入可以使用BufferedReader

// 从文件输入
BufferedReader in = new BufferedReader(new FileReader("employee.txt"));
// 获取键盘输入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 常用方法
in.readLine();

File 类是文件名的一个包装类。常用方法包括:

exists() 查看文件是否存在

getName()  () 得到文件名

getPath()  得到文件完整路径

getParent()  得到包含文件的目录

File f = new File("c:\\student.txt");
if(f.exists()) {
  f.delete();
}
try{
  f.createNewFile();
}
catch(Exception e) {
  System.out.println(e.getMessage());
}
System.out.println(f.getName());
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
System.out.println(f.getParent());
System.out.println(f.canRead());
System.out.println(f.lastModified());
System.out.println(f.length());

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值