文件的输入输出 IO

要对文件进行读取,就需要一个用FIle对象构造一个Scanner对象

Scanner in = new Scanner(Paths.get(("myfile.txt"));

"c:\\mydirectory\\myfile.txt"



file如果指的是一个文件集,我们就可以对此集合调用list()方法,这个方法会返回一个字符数组。很容易理解为什么返回的是一个数组而不是某个更具灵活性的类容器,因为元素的个数是固定的,所以如果我们想取得不同的目录列表,只需要创建一个带不同File对象就可以了。实际上,FliePath对这个类来说是个更好的名字。

File file = new File(.)



从上面的图1中我们可以看出,FilterInputStream虽说是Inputstream的子类,但它依然是BufferedInputStreamDataInputStreamLineNumberInputStreamPushbackInputStream类的父类,这四个类分别提供了最贴近我们程序员使用的方法,如:readInt() 、readInt()、readInt()等等。对于IO操作,不管是磁盘还是网络,最终都是对字节的操作,而我们平时写的程序都是字符形式的,所以在传输的过程中需要进行转换。在字符到字节的转换过程中,我们需要用到一个类:InputStreamReader



new BufferedReader(new InputStreamReader(System.in)),这是用来从键盘接受一行输入的代码,下面我们从里到外进行分析吧。
System.in的类型是InputStream,它代表的是键盘接受的输入,就是说键盘是数据源;System.in的类型可以归结为节点流、字节流、输入流;接下来是InputStreamReader这个对象是处理流,字符流,输入流;
最外面的是BufferedReader的类型是缓冲处理流、字符流、输入流。是不是有点绕啊,下面我们就从流的分类开始。

  1. BufferedReader in = new BufferedReader(new StringReader(  
  2.                 InputStreamTest.read("src/BasicFileOutput.java")));  







 BufferedReader br = new BufferedReader(new FileReader(filename));   BufferedReader in = new BufferedReader(new FileReader(new File( filename).getAbsoluteFile()));  


文件读文件用read()
BufferedReader in = new BufferedReader(new StringReader(BufferInputFile.read("BasicFileOutput.java")))

FileInputStream可以提供附着在一个磁盘文件上的输入流和输出流,而你需向起构造器提供文件名和完整的路径名
FileInputStream fin = new FileInputStream("employee.dat");
FileInputStream  这些类只支持在 字节级别上的读写。也就是说,我们只能从fin对象读入字节和字节数组
byte b = (byte)fin.read();
DataInputStream din = new..
double s = din.readDouble();


正确的读入数值类型(FileInputStream从文件和位置外部的位置获取字节,而其他的流(例如DataInputStream和PrintWriter)可以将字节组装到更有用的数据类型中)
FileInputStream fin = new FileInputStream();
DataInputStream din = new DataInputStream(fin);
double s = din.readDouble();


构造器类的读入数值类型
DataInputStream din = new DataInputStream(new BufferedInputStream(new FileInputStream("employee.dat")));

OutputStreamWriter类将使用选定的字符编码方式,把Unicode字符流转换为字节流。而InputStreamReader类将包含字节(用某种字符编码方式表示的字符)的输入流转换为可以产生Unicode码元的读入器。
InputStreamReader in = new InputStreamReader(System.in);



两个是等价的

PrintWriter out = new PrintWriter("employee.txt");等同于PrintWriter out = new PrintWriter(new FileWriter("employee.txt");



流 字符 数值 字节的概念不清

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值