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

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

时间: 2024-09-19 07:26:41

IO学习笔记(二)的相关文章

C#学习笔记(二)

笔记 C#学习笔记(二) write by cash(天下第七)2002.01.20版权所有,翻录不究cashcao@msn.com 选择 我身上携带着精神.信仰.灵魂 思想.欲望.怪癖.邪念.狐臭它们寄生于我身体的家 我必须平等对待我的每一位客人-----------伊沙:<原则> 我的名字是cash,所以我很功利主义:我的星像是Leo,所以我很大男人主义:我的语言是C#,所以我有点儿拿不定主义. /* 你能看得出来,这不是一篇正规的技术文章,所以若你不小心从里边读到了一个爱情故事,可不要奇

kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1289627 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linuxkvm虚拟机安装htt

Bootstrap3学习笔记(二)之排版_javascript技巧

在上篇文章给大家介绍了BootStrap3学习笔记(一)之网格系统 对于标题,Bootstrap已经修改了h1--h6的样式,如果需要副标题,还可以在其中使用small标记 <h1>h1. Bootstrap heading <small>Secondary text</small></h1> <h2>h2. Bootstrap heading <small>Secondary text</small></h2>

MyBatis学习笔记(二)之关联关系_java

今天主要学习的关联关系是一对一关系与一对多关系. 一.一对一关系 还是通过例子来解释说明.(一个妻子对应一个丈夫). 1)数据库信息 create table t_wife( id int primary key auto_increment, wife_name varchar(), fk_husband_id int ); create table t_husband( id int primary key auto_increment, husband_name varchar() );

kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1606422 本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6.x系列操作系统下KVM优化的点,有很多都是默认支持开启了的,除了采用virtio方式的磁盘IO,与网络IO接口

Java的“对象思想”学习笔记[二]

笔记|对象 在这篇文章里我将介绍一些Java对于对象的基本处理模式的问题. 首先看一个有关对象相等性(Object equivalence)的例子: 先看下面的代码: public class EqualTest1{ public static void main(String[] args){ Integer n1 = new Integer(20); Integer n2 = new Integer(20); System.out.println(n1 = = n2); System.out

Hadoop学习笔记二 安装部署

硬件环境 共有3台机器,均使用的FC5系统,Java使用的是jdk1.6.0.IP配置如下: dbrg-1:202.197.18.72 dbrg-2:202.197.18.73 dbrg-3:202.197.18.74 这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析. 一个很简单的测试办法就是ping一下主机名,比如在dbrg-1上ping dbrg-2,如果能ping通就OK!若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需

kvm虚拟化学习笔记(二十)之convirt安装linux系统

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1306526 情况说明: (1)本文接前文kvm虚拟化学习笔记(十九)之convirt集中管理平台搭建,采用convirt虚拟化平台安装linux操作系统的过程,这个过程中需要对convirt进行一系列的配置才能真正的使用convirt来实现管理.(2)convirt2.1.1是一套kvm/xen虚拟机管理工具,该管理工具

python网络编程学习笔记(二):socket建立网络客户端_python

1.建立socket 建立socket对象需要搞清通信类型和协议家族.通信类型指明了用什么协议来传输数据.协议的例子包括IPv4.IPv6.IPX\SPX.AFP.对于internet通信,通信类型基本上都是AF_INET(和IPv4对应).协议家族一般表示TCP通信的SOCK_STREAM或者表示UDP通信的SOCK_DGRAM.因此对于TCP通信,建立一个socket连接的语句为:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)对于UDP通