[关闭]
@Sakura-W 2016-05-29T12:07:37.000000Z 字数 1665 阅读 2375

Java输入输出

Java


Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java IO体系结构
image_1aj7gifvq53l1knc1k9k80l152f1g.png-171.8kB

一、控制台输入输出

1.读取控制台输入

Java的控制台输入由System.in完成

1)使用BufferedReader对象来创建一个字符流

为了获得一个绑定到控制台的字符流,可以把System.in包装在一个BufferedReader对象中来创建一个字符流。

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

创建了BufferedReader对象后,就可以使用read()方法从控制台读取一个字符,或者readLine()方法读取一个字符串

c = (char)br.read();
//由于read()方法从输入流中读取一个字符并把该字符作为整数值返回,流结束的时候返回-1,所以需要转换成字符
str = br.readLine();//直接读取字符串

2.控制台输出

控制台输出由print()和println()完成。这些方法都有类PrintStream定义,System.out是该类对象的一个引用。

System.out.print("第一次输出");
System.out.println("第二次输出");

PrintStream类继承了OutputStream类,并实现了write()方法。这样write()方法也可以往控制台写操作。PS:write()方法不经常用!

int b = 'A';
System.out.write(b);//把b的低八位字节写到流中

二、读写文件

1.输入流和输出流的类层次图

image_1aj7e3lh8hujq1g1dbp1siq1ja9.png-74.9kB

2.FileInputStream流

该流用于从文件读取数据,它的对象可以用new关键字来创建.可以使用字符串类型的文件名来创建一个输入流对象来读取文件。

InputStream f = new FileInputStream("C:/java/hello");

也可以使用一个文件对象来创建一个输入流对象来读取文件。

File f = new File("C:/java/hello");//首先创建一个文件对象
InputStream f = new FileInputStream(f);

InputStream对象相关操作方法
image_1aj7edf0cgnj1ttuvo51bs9k0hm.png-59.5kB

3.FileOutputStream流
该类用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
该流的创建方法与FileInputStream相同

相关操作
image_1aj7ehnsff6ohei1g2nspj194b13.png-39.9kB

4.输入输出实例

//输出到文件
  byte bWrite[] = {11,21,2,32,43};
  OutputStream os = new FileOutputStream("test.txt");
  for(int i = 0; i < bWrite.length; i++){
    os.write(bWrite[i]);
  }
  os.close();
  //从文件读取
  InputStream is = new FileInputStream("test.txt");
  int size = is.available();
  for(int i = 0; i < size; i++){
    System.out.print((char)is.read() + " ");
  }
  is.close();

三、Java中的目录

1.创建目录
mkdir()方法创建一个文件夹,成功则返回true,失败返回false.失败表明File对象指定的路径已存在或者由于整个路径还不存在,所以该文件夹不能被创建。
mkdirs()方法创建一个文件夹和它所有的父文件夹。

String dirname = "/tmp/user/java/bin";
File d = new File(dirname);
// 现在创建目录
d.mkdirs();

2.读取目录
一个目录其实就是一个File对象,包含其他文件和文件夹。如果创建一个File对象,并且是一个目录,那么调用isDirectory()会返回true;调用list()方法则可以提取它包含的文件和文件夹的列表。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注