UI基础控件一

IO流(Input Output

用来处理设备之间数据的传输。

Java处理数据的操作是通过流的方式

按照操作数据分为:字符流和字节流

字符流对象中融合了编码表,文字用字符流,图片用字节流。

通用的为字节流

 

IO流常用基类

1.字节流抽象基类: InputStreamOutputStream

2.字符流抽象基类: Reader Writer

 

一、字符流

Writer 写入字符流

 

既然IO流是用于操作数据的,

那么数据的最常见体现形式是文件。

 

需求:在硬盘上创建一个文件,并写入一些数据。

找到专门用于操作文件的Writer子类对象,FileWriter

1·创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。

·初始化的时候要抛异常IOException

·在指定目录下会产生文件,如果该目录下已有同名文件,将被覆盖。

·构造函数就是为了明确数据存放的目的地。

 

2·主要使用write方法。

·writeString str)字符串写入到流中

·flush() 刷新该流的缓冲,将缓冲区的数据刷到目的地

·close() 关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据,将数据刷到目的地中。和flush的区别:flush刷新后流可以继续使用,close刷新后会将流关闭,close关闭此流,但要先刷新,最后必须要用到close

 

import java.io.*;

 

public class IODemo

{

public static void main(String[] args)throws IOException

{

FileWriter fw = new FileWriter("yusheng.doc");

fw.write("adfghjkk");

fw.flush();

fw.write("qwertyui");

fw.flush();

fw.write("sdfghjkl");

fw.close();

}

}

 

·IOException异常处理

凡是和设备上数据产生联系的都会发生IO异常,无论读写还是创建。

·在外面建立引用,在try内初始化。

·在finnally中嵌套一个try 

·引用null的可能,要判断。

import java.io.*;

 

public class IODemo1

{

public static void main(String[] args)

{

FileWriter fw = null;

try

{

fw = new FileWriter("ys.txt");

fw.write("hello world!");

}

catch (IOException e)

{

System.out.println(e.toString());

}

finally

{

try

{

if(fw != null)

{

fw.close();

}

}

catch (IOException e1)

{

System.out.println(e1.toString());

}

}

 

}

}

 

 

·进行数据续写

FileWriterurlappend) appendtrue时,则续写内容

Windows中,回车符是由两个字符表示的,\r\n 

记事本不识别\n

Linux中,回车符可以使用单个\n表示。

 

//需求: 在ys.txt文件末尾插入 “你好” 换行 “谢谢”

 

import java.io.*;

 

public class IODemo2

{

public static void main(String[] args)

{

FileWriter fw = null;

try

{

fw = new FileWriter("ys.txt",true);

fw.write("\r\n你好\r\n谢谢");

}

catch (IOException ioe)

{

System.out.println(ioe.toString());

}

finally

{

try

{

if(fw != null)

{

fw.close();

}

}

catch (IOException ioe)

{

System.out.println(ioe.toString());

}

}

}

}

 

 

Reader

·创建一个文件读取流对象,和指定名称的文件相关联。

·要保证该文件是已经存在的,如果不存在,会发生

FileNotFoundException异常

·调用读取流对象的read方法。

read方法一次读一个字符,而且会自动往下读。

import java.io.*;

 

public class IODemo3

{

public static void main(String[] args)

{

FileReader fr = null;

try

{

fr = new FileReader("ys.txt");

while(true)

{

int ch = fr.read();

if(ch == -1)

break;

System.out.print((char)ch);

}

}

catch (IOException e1)

{

System.out.println(e1.toString());

}

finally

{

try

{

if(fr != null)

fr.close();

}

catch (IOException e)

{

System.out.println(e.toString());

}

}

}

}

 

第二种读取方式: 通过字符数组进行读取

read(char[]) 返回的是读到字符个数。

 

import java.io.*;

 

public class IODemo3

{

public static void main(String[] args)

{

FileReader buf = null;

try

{

buf = new FileReader("ys.txt");

char[] ch = new char[1024];

int u = 0;

while((u = buf.read(ch))!= -1)

{

System.out.print(new String(ch,0,u));

}

}

catch (IOException ioe)

{

System.out.println(ioe.toString());

}

finally

{

try

{

if(buf != null)

buf.close();

}

catch (IOException ioe)

{

System.out.println(ioe.toString());

}

}

}

}

 

C盘向D盘拷贝文件: 

  原理 就是将C盘下的文件数据存储到D盘下的一个文件中

 

步骤:

1.在D盘创建一个文件,用于存储C盘文件

2.定义读取流和C盘关联

3.通过不断的读写完成

4.关闭资源

 

//需求:将当前文件夹下的IODemo.java复制

 

import java.io.*;

 

public class IODemo4

{

public static void main(String[] args)

{

FileWriter fw = null;

FileReader fr = null;

try

{

fw = new FileWriter("IODemo_copy.txt");

fr = new FileReader("IODemo.java");

int len = 0;

char[] ch = new char[1024];

while((len = fr.read(ch)) != -1)

{

fw.write(new String(ch),0,len);

}

}

catch (IOException ioe)

{

throw new RuntimeException("读写失败");

}

finally

{

try

{

if(fw != null)

fw.close();

if(fr != null)

fr.close();

}

catch (IOException ioe)

{

System.out.println(ioe.toString());

}

}

}

}

 

 

UI基础控件一

上一篇:鼠标 hook 源码 C#版


下一篇:[tech] iOS/Safari User Agent Strings