Educoder–Java高级特性(第一章)- IO流【笔记+参考代码】

Educoder–Java高级特性(第一章)- IO流【笔记+参考代码】


第一关


1、下列关于字节和字符的说法正确的是(BC)
A、字节 = 字符 + 编码
B、字符 = 字节 + 编码
C、字节 = 字符 + 解码
D、字符 = 字节 + 解码

2、下列描述正确的是:(C )
A、使用代码读取一个文件的数据时,应该使用输出流。
B、使用代码复制文件的时候,只需要使用输出流。
C、使用代码读取一个文本文件的数据时,只需要使用输入流即可。
D、从客户端向服务端发送数据可以使用输入流。


第二关


编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

读取src/step2/input/目录下的task.txt文件信息并输出到控制台,使用Java代码将字符串learning
p\fractice写入到src/step2/output/目录下的output.txt,若文件目录不存在,则创建该目录。
注意:临时字节数组需要定义长度为8位,否则会有空格。


测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。



参考代码

package step2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Task {
	
	public void task() throws IOException{
		/********* Begin *********/
		File file = new File("src/step2/input/task.txt");
		FileInputStream fs = new FileInputStream(file);  //定义一个文件输入流
		byte[] b = new byte[8];                         //定义一个字节数组
		fs.read(b);                                     //将输入流的数据读入到字节数组
		String str = new String(b,"UTF-8");             //通过utf-8编码表将字节转换成字符
		System.out.println(str);

		File dir = new File("src/step2/output");
		if(!dir.exists()){
			dir.mkdir();
		}
		FileOutputStream out = new FileOutputStream("src/step2/output/output.txt"); //创建输出流
		String str1 = "learning practice";
		byte[] c = str1.getBytes();   //将字符串转换成字节
		out.write(c);                 //写数据
		out.flush();                  //刷新缓存区数据
		fs.close();					  //释放资源
		out.close();
		/********* End *********/
	}
}



第三关


编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

将src/step3/input/目录下的input.txt文件复制到src/step3/output/目录下;

复制的新文件命名为output.txt;

input.txt文件中只有8个字符。


测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。



参考代码

package step3;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Task {
	
	public void task() throws IOException{
		/********* Begin *********/
		String file1 = "src/step3/input/input.txt";
		FileReader fr = new FileReader(file1);
		char[] ch = new char[8];
		fr.read(ch);

		String file2 = "src/step3/output/output.txt";
		FileWriter fw = new FileWriter(file2);
		fw.write(ch);
		
		fr.close();
		fw.flush();
		fw.close();
		/********* End *********/		
	}
}



第四关


编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

复制src/step4/input/目录下的input.txt文件到src/step4/output/目录下,新文件命名为output.txt;

复制src/step4/input/目录下的input.jpg文件到src/step4/output/目录下,新文件命名为output.jpg。


测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。



参考代码

package step4;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Task {
	
	public void task() throws IOException{
		/********* Begin *********/
		String file1 = "src/step4/input/input.txt";
		FileInputStream fr = new FileInputStream(file1);
		byte[] b = new byte[1024];
		int len = 0;

		String file2 = "src/step4/output/output.txt";
		FileOutputStream fw = new FileOutputStream(file2);
		while((len = fr.read(b))!=-1){
			fw.write(b,0,len);
		}
		fr.close();
		fw.close();

		String file3 = "src/step4/input/input.jpg";
		String file4 = "src/step4/output/output.jpg";
		FileInputStream fs = new FileInputStream(file3); //定义文件输入流读取文件信息
		FileOutputStream fos = new FileOutputStream(file4);//定义文件输出流写文件
		len = 0;        //每次读取数据的长度
		byte[] bys = new byte[1024];    //数据缓冲区
		while( (len = fs.read(bys)) != -1){
			fos.write(bys, 0, len);
		}
		//释放资源  刷新缓冲区
		fs.close();
		fos.close();
		/********* End *********/		
	}
}

【笔记】

FileInputStream:字节文件输入流,从文件系统中的某个文件中获得输入字节,用于读取诸如图像数据之类的原始字节流。
FileOutputStream:字节文件输出流是用于将数据写入到File,从程序中写入到其他位置。
BufferedInputStream:字节缓冲输入流,提高了读取效率。
BufferedOutputStream:字节缓冲输出流,提高了写出效率。

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt")));
        String str;
        //一次性读取一行
        while ((str = reader.readLine()) != null) {
            System.out.println(str);
        }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44177494/article/details/104808752