千锋20200317

在千锋“逆战”学习第32天

      每日一句:每一个问题都是一把锁,你要相信世界上一定有一把钥匙能打开这把锁,你也能找到这把钥匙。
      今天学习了字符编码和File类的内容
      明天继续努力。

作业

1.一下关于File类说法正确的是

A. 一个 File 对象代表了操作系统中的一个文件或者文件夹
B. 可以使用 File 对象创建和删除一个文件
C. 可以使用 File 对象创建和删除一个文件夹
D. 当一个 File 对象被垃圾回收时,系统上对应的文件或文件夹也被删除
A	B	C

--------------------------------------------------------------------------
2.补全代码

public class TestMyFile {
	public static void main(String[] args) throws Exception{
		File file;
		//创建一个File对象表示当前目录下的“hello.txt”文件
		file = new File("hello.txt");
		//判断文件是否存在
		System.out.println(file.exists());
		//如果文件存在输出完整路径
		if(file.exists()) {
			System.out.println(file.getAbsolutePath());
		}
	}
}

运行结果:`

true
E:\QFtrain\JAVA EE\JavaTrain\hello.txt

--------------------------------------------------------------------------
10.要想从某个文件中获得一个字符输出流,则至少有以下三种方式
A. 利用 FileWriter 类
B. 利用 PrintWriter 类
C. 利用 FileOutputStream 类,并通过 OutputStreamWriter 类获得 Writer
请简述这三种方式获得 Writer 的区别。

FileWriter可以直接读取文件,可以直接写入字符串
FileWriter fw = new FileWriter(new File("c:\a.txt"));
PrintWrite加一个TRUE可以自动刷新缓冲区
PrintWriter pw = new PrintWriter(fw);
FileOutStream活动的是字节
fileoutputstream fos = new FileOutputStream(“newPoem.txt”);
OutputStreamWriter osw = new OutputStreamWriter(fos,”UTF-8);

--------------------------------------------------------------------------
11.以下几种文件格式,应当使用字节流还是字符流
.java源文件      字符流
.class字节码文件      字节流
.html网页文件      字符流
.jpg图像文件      字节流
.mp3音乐文件      字节流

--------------------------------------------------------------------------
12.写出过滤流相应的功能
ObjectInputStream       读对象
ObjectOutputStream       写对象
BufferInputStream       字节流、缓冲功能
BufferedOutputStream       字节流、缓冲功能
DataInputStream       字节流、读八种基本类型
DataOutputStream       字节流、写八种基本类型
PrintWriter       字符流、写字符串并换行
PrintStream       字节流
BufferedReader       字符流、缓冲功能、读入一行文本

--------------------------------------------------------------------------
14. 事先在当前目录下准备好一个 test.txt 的文本文件,要求该文本文件是使用 GBK 编码的多行文本文件。如:test.txt
窗前明月光
疑是地上霜
举头望明月
低头思故乡
利用字节流+桥转换读入这个文本文件,然后按照行的顺序,以 UTF-8 的编码方式,写到 test2.txt 文件中,例:test2.txt
低头思故乡
举头望明月
疑是地上霜
窗前明月光

public class Test14 {
	public static void main(String[] args) throws Exception {
		FileInputStream fis = new FileInputStream("test.txt");
		InputStreamReader isr = new InputStreamReader(fis, "Gbk");
		BufferedReader br = new BufferedReader(isr);

		FileOutputStream fos = new FileOutputStream("test2.txt");
		OutputStreamWriter osw = new OutputStreamWriter(fos, "Utf-8");
		PrintWriter pw = new PrintWriter(osw);

		List<String> list = new ArrayList<String>();
		System.out.println("test.txt");
		while (true) {
			String str = br.readLine();
			if (str == null) {
				break;
			}
			list.add(str);
			System.out.println(str);
		}

		Collections.reverse(list);
		System.out.println("test2.txt");
		for (String str : list) {
			pw.println(str);
			System.out.println(str);
		}
		br.close();
		pw.close();
	}
}

运行结果:

test.txt
床前明月光
疑是地上霜
举头望明月
低头思故乡
test2.txt
低头思故乡
举头望明月
疑是地上霜
床前明月光

--------------------------------------------------------------------------
17. 在当前目录下创建一个 worldcup.txt 的文本文件,其格式如下:
2006/意大利
2002/巴西
该文件采用“年份/世界杯冠军”的方式保存每一年世界杯冠军的信息。
要求:读入该文件的基础上,让用户输入一个年份,输出该年的世界杯冠军。如果该年没有举办世界杯,则输出“没有举办世界杯”

public class TestWorldCup {
	public static void main(String[] args) throws Exception {
		FileInputStream fis = new FileInputStream("worldcup.txt");
		InputStreamReader isr = new InputStreamReader(fis);
		BufferedReader br = new BufferedReader(isr);

		HashMap<String, String> map = new HashMap<String, String>();
		String[] con = new String[2];
		String str;
		while ((str = br.readLine()) != null) {
			con = str.split("/");
			map.put(con[0], con[1]);
		}

		Scanner input = new Scanner(System.in);
		System.out.print("输入一个年份:");
		String str1 = input.next();
		if (map.containsKey(str1)) {
			System.out.println("该年世界杯冠军是:" + map.get(str1));
		} else {
			System.out.println("没有举办世界杯");
		}
	}
}

运行结果:

输入一个年份:1998
该年世界杯冠军是:法国
输入一个年份:1988
没有举办世界杯

--------------------------------------------------------------------------
18.从命令行中读入一个文件名,判断该文件是否存在。如果该文件存在,则在原文件相同路径下创建一个文件名为“copy_原文件名”的新文件,该文件内容为原文 件 的 拷 贝 。

public class TestCopy {
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入一个文件名:");
		String fname = sc.nextLine();
		File file = new File("E:\\QFtrain\\JAVA EE\\JavaTrain");
		File[] listFiles = file.listFiles();

		for (File file2 : listFiles) {
			String name = file2.getName();
			if (fname.equals(name)) {
				FileReader fr = new FileReader(fname);
				BufferedReader br = new BufferedReader(fr);
				FileWriter fw = new FileWriter("copy_" + fname);
				PrintWriter pw = new PrintWriter(fw);
				System.out.println("新文件" + "\n" + "copy_" + fname);
				while (true) {
					String str = br.readLine();
					if (str == null) {
						break;
					}
					pw.println(str);
					System.out.println(str);
				}
			} else {
				System.out.println("没有这个文件");
				break;
			}
		}
	}
}

运行结果:

输入一个文件名:
worldcup.txt
新文件
copy_worldcup.txt
2006/意大利
2002/巴西
1998/法国
1994/巴西
1990/德国
1986/阿根廷
1982/意大利
1978/阿根廷
1974/德国
1970/巴西
1966/英格兰
1962/巴西
1958/巴西
1954/德国
1950/乌拉圭
1938/意大利
1934/意大利
1930/乌拉圭

输入一个文件名:
test.doc
没有这个文件
发布了40 篇原创文章 · 获赞 0 · 访问量 1136

猜你喜欢

转载自blog.csdn.net/qq_41841482/article/details/104930648