IO学习笔记(二)

11.  IO实现读取键盘录入  与   字符流和字节流的转换

System.out标准的输出

System.in标准的输入           static InputStream  in


OutputStreamWriter(OutputStream out) 

OutputStreamWriter(OutputStream out, String charsetName)        创建使用指定字符集的 OutputStreamWriter

OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。 

InputStreamReader(InputStream in) 

InputStreamReader(InputStream in, String charsetName)            创建使用指定字符集的 InputStreamReader

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
InputStream in = System.in();

InputStreamReader isr = new InputStreamReader(in);   //字符流

BufferedReader br  = new BufferedReader(isr);            //装饰设计模式---bufferedReader缓冲包装一下,提升性能

//--------BufferedReader br  = new BufferedReader(new InputStreamReader(System.in()));(1)

//--------BufferedReader br  = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\a.txt")));(4)

OutputStream os = System.out();

OutputStreamWriter osw  = new OutputStreamWriter(os);

BufferedWriter bw = new BufferedWriter(osw);

//---------BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out()));(2)

//---------BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new  FileOutputStream("d:\\a.txt")));   将输入的文件写入文件(3)

String line = null;

while  ((line=br.readline())!=null) {

bw.write(line);

bw.newLine();

bw.flush();

//System.out.println(line);

}

br.close();

使用IO操作的基本规律和技巧:

(1)首先必须明确源和目的:

源:输入流   InputStream     Reader

目的:输出流  OutputStream   Writer

(2)判断操作的文件类型

纯文本:字符流    Reader    Writer

其他文件:字节流   InputStream  OutputStream

(3)明确具体要使用的对象

通过设备来区分:

源:内存    硬盘    键盘

目的:内存   硬盘   控制台

12.  改变输入、输出设备

在System类中提供了两个静态的方法可以改变输入和输出设备

static voidsetIn(InputStream in)  重新分配“标准”输入流

static voidsetOut(PrintStream out) 重新分配“标准”输出流

System.setIn(new FileInputStream("D:\\a.txt"));

BufferedReader br  = new BufferedReader(new BufferedReader(System.in()));

System.setOut(new PrintStream("D:\\b.txt"));

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out()));

13.  File 类

它既能代表一个文件的名称,又能代表一个目录下一组文件的名称。常用于对文件或文件夹的操作。

File对象也可以作为参数传递给流的构造函数。

File(File parent, String child)   根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例

File(String pathname)    通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

File(String parent, String child)   根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File  file = new File("c:\\abc\\a.txt");-------File  file = new File("c:"+ File.separator +"abc"+ File.separator +"a.txt");  //比较通用

File  file = new File("c:\\abc","a.txt");

File f = new File("D:\\abc");

File file = new File(f,"a.txt");--------------这一构造的执行,并没有真正的创建了一个文件或文件夹。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

createNewFile()  当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件

File  file = new File("c:\\abc\\a.txt");

System.out.print(file.createNewFile());------------如果c:\\abc\\a.txt路径下的文件不存在,那么会返回true,如果已经存在或者创建失败,那么会返回false

boolean delete()  删除此抽象路径名表示的文件或目录

void deleteOnExit()  在虚拟机终止时,请求删除此抽象路径名表示的文件或目录-----在操作结束退出时删除

当我们创建一个文件,并且对这个文件进行操作,如果这一过程中出现异常,那么程序将终止,我们的delete()方法将不会被执行。

但是我们一定要删除这个文件,这时候就要使用deleteOnExit()方法,表示在程序对文件操作结束后,执行次命令,将文件删除。

File  file = new File("c:\\abc\\a.txt");

file.deleteOnExit();

code(对文件内容进行操作);

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 

boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 

booleanisHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件

File  file = new File("c:\\abc\\a.txt");

System.out.print(file.isDirectory()); -------false

System.out.print(file.isFile());          -------false

分析:因为File  file = new File("c:\\abc\\a.txt");这条语句是不创建文件或目录的,所以两种判断都为false,那么我们在执行这两种判断时,

有必要先进行判断对应的文件是否存在,如果不存在的话则没必要进行后续判断。

boolean exists()   测试此抽象路径名表示的文件或目录是否存在

boolean mkdir()   创建此抽象路径名指定的目录-----------------只能在现有目录的基础上创建一个级别的目录

boolean mkdirs()    创建此抽象路径名指定的目录,包括所有必需但不存在的父目录------------可以创建多级目录

boolean  isAbsolute() 测试此抽象路径名是否为绝对路径名------无论文件是否存在,只要是绝对路径该方法就会返回true。否则返回false

……………………………………………………………………………………………………………………………………………………………

 String  getPath()   将此抽象路径名转换为一个路径名字符串

 String getAbsolutePath()  返回此抽象路径名的绝对路径名字符串

File  file = new File(当这里是一个绝对路径的时候,上述两方法返回值相同);

 File  getAbsoluteFile()  返回此抽象路径名的绝对路径名形式。

 String  getParent()    返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null

File file = new File("D:\\IO\\abc.txt");
System.out.println("---:"+ file.getAbsoluteFile());                ---:D:\IO\abc.txt
System.out.println("---:"+file.getParent());                       
---:D:\IO
File file2 = new File("ac.txt");  
System.out.println("^^^:"+ file2.getAbsoluteFile());               ^^^:D:\IO\ac.txt
System.out.println("^^^:"+file2.getParent());                      ^^^:null

System.out.println("---:"+file.getPath());                                                                ---:D:\IO\abc.txt

System.out.println("---:"+file2.getPath());                                                              ---:ac.txt

*************************************************************************************************************************


上一篇:volatile底层原理详解


下一篇:销售订单的建立,发货单建立,销售发票产生