Java2程序设计基础第十章课后习题

  1. 什么是文件的输入与输出?
    向文件写入数据
    从文件读取数据
  2. 什么是流?Java语言中分为哪两种流?这两种流有何差异?
    流是指计算机各部件之间的数据流动。
    按照数据的传输方向,流可分为输入流与输出流。
    对于输入流只能从其读取数据而不能向其写入数据;
    对于输出流只能向其写入数据而不能从其读取数据。
  3. InputStream、OutputStream、Reader和Writer四个类在功能上有何异同?
    InputStream和OutputStream类通常是用来处理位流,也就是二进制文件,但也可以处理纯文本文件;
    Reader和Writer类是用来处理字符流,也就是纯文本文件。
  4. 利用基本输入输出流实现从键盘上读入一个字符,然后显示在屏幕上。
import java.io.*;

class exe10_4 {
	public static void main(String args[]) {
		FileInputStream fin;
		char ch;
		try {
			fin = new FileInputStream(FileDescriptor.in);
			System.out.println("请输入一个字符:");
			ch = (char)fin.read();
			System.out.println("输入的字符为:" + ch);
			fin.close();
		} catch(IOException e) {}
	}	
}
  1. 顺序输入输出流与管道输入输出流的区别是什么?
    顺序输入流的功能是将多个输入流顺序连接在一起,形成单一的输入数据流,没有对应的输出流存在。在进行输入时,顺序输入流依次打开每个输入流并读取数据,在读取完毕后将该流关闭,然后自动切换到下一个输入流。
    管道输入输出流用来将一个程序或线程的输出连接到另外一个程序或线程,使得相连线程能够通过PipedInputStream和PipedOutputStream类进行数据交换,从而可以实现程序内部线程间的通信或不同程序间的通信。其中:管道输入流作为管道的接收端、管道输出流作为管道的发送端,在程序设计中应注意数据的传输方向。
  2. Java语言中定义的三个标准输入输出流是什么?它们对应什么设备?
    System.in对应于输入流,通常指键盘输入设备;
    System.out对应于输出流,指显示器等信息输出设备;
    System.err对应于标准错误输出设备,使得程序的运行错误可以有固定的输出位置,通常该对象对应于显示器。
  3. 利用文件输出流创建一个文件file1.txt,写入字符“文件已被成功创建!”,然后用记事本打开该文件,看一下是否正确写入。
import java.io.*;

class exe10_7 {
	public static void main(String args[]) {
		String str = "文件已被成功创建!";
		try {
			FileWriter fw = new FileWriter("E:\\Program Files (x86)\\JAVA\\file1.txt");
			fw.write(str);
			fw.close();
		} catch(IOException e) {}
	}	
}
  1. 利用文件流入打开第7题中创建的文件file1.txt,读取其内容并显示在屏幕上。
import java.io.*;

class exe10_8 {
	public static void main(String args[]) {
		char c[] = new char[1024];
		try {
			FileReader fr = new FileReader("E:\\Program Files (x86)\\JAVA\\file1.txt");
			int num = fr.read(c);
			String str = new String(c, 0, num);
			System.out.println("读取的内容如下:");
			System.out.println(str);
		} catch(IOException e) {}
	}	
}
  1. 利用文件输入输出流打开7题创建的文件file1.txt,然后在文件的末尾追加一行字符串“又添加了一行文字!”。
import java.io.*;

class exe10_9 {
	public static void main(String args[]) throws IOException {
		FileWriter fw = new FileWriter("E:\\Program Files (x86)\\JAVA\\file1.txt", true);
		String str = "\r\n" + "又添加了一行文字!";
		fw.write(str);
		fw.close();
	}	
}
  1. 产生15个20~9999之间的随机整数,然后利用bufferedWriter类将其写入文件file2.txt中;之后在读取该文件中的数据并将它们升序排序。
import java.io.*;
import java.util.Arrays;
import java.util.Random;

class exe10_10 {
	public static void main(String args[]) throws IOException {
		// 构造20~9999之间的随机整数
		int[] num = new int[15];
		int min = 20;
		int max = 9999;
		Random rand = new Random();
		for (int i = 0; i < 15; i++) {
			num[i] = rand.nextInt(max - min + 1) + min;
		}
		System.out.println("随机数组为:");
		System.out.println(Arrays.toString(num));
		
		// 利用BufferedWriter类将其写入文件file2.txt中
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\Program Files (x86)\\JAVA\\file2.txt"));
			for (int i = 0; i < 15; i++) {
				bw.write(String.valueOf(num[i]));
				bw.newLine();
			}
			bw.flush();
			bw.close();
		} catch(IOException e) {}
		
		// 读取file2.txt文件中的数据并将它们升序排序
		int[] num_r = new int[15];
		try {
			BufferedReader br = new BufferedReader(new FileReader("E:\\Program Files (x86)\\JAVA\\file2.txt"));
			for (int i = 0; i < 15; i++) {
                num_r[i] = Integer.parseInt(br.readLine());
            }
			br.close();
		} catch (IOException e) {}
		Arrays.sort(num_r);
		System.out.println("数组升序排列后:");
		System.out.println(Arrays.toString(num_r));
	}	
}
  1. Java语言中使用什么类来对文件与目录进行管理?
    在java.io包中定义了一个File类专门用来管理磁盘文件和目录。

注:练习均为博主自己编写,不是标准答案,可能存在问题,可以留言讨论。

你可能感兴趣的:(java)