速学堂(java)第十章编程题答案(自写)

速学堂(java)第十章编程题答案(自写)

1. 实现字节数组和任何基本类型和引用类型执行的相互转换
提示:使用ByteArrayInutStream和ByteArrayOutputStream。

package com.sxt.io;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

/**
 * 实现字节数组和任何基本类型和引用类型执行的相互转换
 * 提示:使用ByteArrayInutStream和ByteArrayOutputStream。
 * @author ASUS
 *
 */
public class lianxi01 {
	
	public static void main(String[] args) throws ClassNotFoundException, IOException {
		
		int num = 18;
		boolean flag = true;
		User user = new User("gq","sxt",18);
		
		test01(num,flag,user);
		
	}
	
	public static void test01(int num,boolean flag,User user) throws IOException, ClassNotFoundException{
		
		//基本类型,引用数据类型--->字节数组
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(bos);
		
		oos.writeInt(num);
		oos.writeBoolean(flag);
		oos.writeObject(user);
		
		byte[]datas = bos.toByteArray();
		
		//先开后关
		oos.close();
		bos.close();
		
		//字节数组--->基本类型,引用数据类型
		ByteArrayInputStream bis = new ByteArrayInputStream(datas);
		ObjectInputStream ois  = new ObjectInputStream(bis);
		
		int num1 = ois.readInt();
		boolean flag1 = ois.readBoolean();
		User user1 = (User) ois.readObject();
		
		System.out.println(num1);
		System.out.println(flag1);
		System.out.println(user1);
		
		//先开后关
		ois.close();
		bis.close();
		
		
	}

}

//User类实现序列化接口
class User implements Serializable{
	
	private String name;//姓名
	private String username;//用户名
	private int age;//年龄
	
	public User() {
		
	}
	
	//构造器
	public User(String name, String username, int age) {
		super();
		this.name = name;
		this.username = username;
		this.age = age;
	}

	//Set,Get方法
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return username;
	}

	public void setPassword(String username) {
		this.username = username;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	//重写toString方法
	public String toString() {

		return "姓名:"+name+" 用户名:"+username+" 年龄:"+age;
		
	}

}

运行结果截图:
在这里插入图片描述

2. 复制文件夹d:/sxtjava下面所有文件和子文件夹内容到d:/sxtjava2。
提示:涉及单个文件复制、目录的创建、递归的使用

package com.sxt.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 复制文件夹d:/sxtjava下面所有文件和子文件夹内容到d:/sxtjava2。
 * 提示:涉及单个文件复制、目录的创建、递归的使用
 * @author ASUS
 *
 */
public class lianxi02 {
	
	public static void main(String[] args) throws IOException {
		
		copyDirectiory("D:/sxtjava","D:/sxtjava2");

		
	}
	//复制文件
	public static void copyFile(File sourceFile,File targetFile) throws IOException{
		
		InputStream is = new BufferedInputStream(new FileInputStream(sourceFile));
		OutputStream os = new BufferedOutputStream(new FileOutputStream(targetFile));
		
		byte[]flush = new byte[1024];
		int len = -1;//收获长度
		
		while((len = is.read(flush))!=-1){
			
			os.write(flush, 0, len);
			
		}
		
		
		os.flush();
		//先打开的后关闭
		os.close();
		is.close();
		
	}
	
	public static void copyDirectiory(String sourceFolder,String destFloder) throws IOException{
		
		File sf = new File(sourceFolder);
		File df = new File(destFloder);
		
		//判断源文件夹是否存在
		if((!sf.exists())||(sf == null)){
			
			System.out.println("源文件夹未找到");
			return;
			
		}
		
		//判断目标文件夹是否存在
		if(!df.exists()){
			boolean flag;
			//若不存在,则进行创建
			flag = df.mkdirs();
			if(flag == false){
				
				System.out.println("创建文件夹失败");
				return;
				
			}
			
		}
		
		//对源文件夹进行遍历
		File[]files = sf.listFiles();
		for(File s:files){
			//若s是文件则调用复制文件方法
			if(s.isFile()){
				
				copyFile(s, new File(df, s.getName()));
				
			}else if(s.isDirectory()){
				//若s是文件夹则调用复制文件夹方法
				String source = sourceFolder+"/"+s.getName();
				String dest = destFloder+"/"+s.getName();
				copyDirectiory(source, dest);
				
			}
			
		}
		
	}

}

运行结果截图:

sxtjava中原有文件
在这里插入图片描述
复制后sxtjava2中文件
在这里插入图片描述

3. 使用IO包中的类读取D盘上exam.txt文本文件的内容,每次读取一行内容,将每行作为一个输入放入ArrayList的泛型集合中并将集合中的内容使用加强for进行输出显示。

package com.sxt.io;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 使用IO包中的类读取D盘上exam.txt文本文件的内容,
 * 每次读取一行内容,将每行作为一个输入放入ArrayList
 * 的泛型集合中并将集合中的内容使用加强for进行输出显示。
 * @author ASUS
 *
 */
public class lianxi03 {
	public static void main(String[] args) throws IOException {
		
		 List<String>list = new ArrayList<String>();
		
		 //创建源
		 File src =new File("D:/exam.txt");
		 
		 //2.选择流		 
		 BufferedReader fis = new BufferedReader(new FileReader(src));		 
		 
		 String str = "";
		 
		 //readLine是BufferedReader中特有的方法
		 while((str = fis.readLine())!=null){
			 
			 list.add(new String(str.getBytes(),"UTF-8"));
			 
		 }
		 fis.close();
		 for(String str1:list){
			 System.out.println(str1);
		 }

	}

}

运行结果截图:

D盘下exam.txt原有内容
在这里插入图片描述

运行后,操作台显示
在这里插入图片描述

发布了11 篇原创文章 · 获赞 1 · 访问量 2631
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览