第13次抽考(IO流)
1、将文本文件a.txt 复制成 b.txt。要求:
a. 用逐个字符复制方式;
b. 用逐行读写方式;
c. 用字符数组方式
2、将压缩包a.rar复制成b.rar。
注意:复制前后手工打开文件,若复制后无法打开,则说明复制文件有误。
3、设计一个单链表,配备基本的创建、输出等操作。通过序列化机制将其写入文件,再通过反序列化机制从文件中读出。在序列化前/后输出链表内容。
一.
1.a:
package week4; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; //将文本文件a.txt复制成b.txt
public class Work1 {
public static void main(String[] args) throws IOException
{
File a=new File("a.txt");
//a.createNewFile();
File b =new File("b.txt");
//b.createNewFile();
//文本文件用FileReader/FileWriter
try {
FileReader in =new FileReader(a);//这里就像一个水管接上了a.txt,a.txt像水龙头,当我们要read的时候就会放水
FileWriter out =new FileWriter(b);//这里一个水管接上了b.txt,b.txt像池子当我们要write的时候就会将水倒入池子中
int ch;//这里是ASCILL码的值
while((ch=in.read())!=-1)
{
out.write(ch);
}
in.close();
out.close();
System.out.println("复制完成"); } catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e)
{
e.printStackTrace();
} }
}
1.b:
package week4; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; //采用缓冲区进行逐行读取
public class Work1 {
public static void main(String[] args) throws IOException
{
//创建文件
File a=new File("a.txt");
File b=new File("b.txt");
//接入水管和池子
FileReader in =new FileReader(a);
FileWriter out=new FileWriter(b);
//用BufferedReader包装,成为一个缓冲区
BufferedReader b_in=new BufferedReader(in);
BufferedWriter b_out=new BufferedWriter(out);
System.out.println("开始文件复制");
String s;
while((s=b_in.readLine())!=null)
{
b_out.write(s,0,s.length());
b_out.newLine();
}
b_in.close();
b_out.close();
System.out.println("结束文件复制"); }
}
1.c
package week4; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//采用字符数组来作为缓冲区来复制文件
public class Work1 {
public static void main(String[] args) throws IOException
{
//创建文件对象
File a=new File("a.txt");
File b=new File("b.txt");
char[] ca=new char[(int)a.length()];
FileReader in=new FileReader(a);
FileWriter out=new FileWriter(b);
System.out.println("开始文件复制");
in.read(ca);
out.write(ca);
in.close();
out.close();
System.out.println("文件复制结束");
}
}
2.复制压缩包
package week4; import java.io.BufferedReader;
import java.io.BufferedWriter;
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 Work1 {
public static void main(String[] args) throws IOException
{
File a=new File("a.zip");
File b=new File("b.zip");
FileInputStream in =new FileInputStream(a);
FileOutputStream out=new FileOutputStream(b);
int ch;
while((ch=in.read())!=-1)
{
out.write(ch);
}
System.out.println("复制完成"); }
}
3.
package week4; import java.io.BufferedReader;
import java.io.BufferedWriter;
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;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Scanner;
//序列化单链表,只有实现Serializable接口,才能序列化,transient修饰的不会被序列化
public class Work1 {
public static void main(String[] args) throws IOException
{
Node a=new Node(0);
a.create();
a.print();
//先将对象写入输出流,恰好相反
FileOutputStream fo=new FileOutputStream("serialObj.dat");
ObjectOutputStream obj_o=new ObjectOutputStream(fo);
obj_o.writeObject(obj_o);
obj_o.close();
//从dat文件中读取
FileInputStream fi=new FileInputStream("serialObj.dat");
ObjectInputStream obj_i=new ObjectInputStream(fi);
try {
Node b=(Node)obj_i.readObject();
obj_i.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
class Node implements Serializable
{
Node next;
int value;
public Node(int value)
{
this.value=value;
}
//创建单链表
public void create()
{
int tmpValue;
Scanner sc=new Scanner(System.in);
Node p=this;
while((tmpValue=sc.nextInt())!=-1)
{
Node n=new Node(tmpValue);
p.next=n;
p=n;
}
p.next=null;
System.out.println("创建成功"); }
//打印单链表
public void print()
{
Node p=this;
while(p!=null)
{
System.out.println(p.value);
p=p.next;
}
}
}
第13次抽考(IO流)的更多相关文章
- Java基础-IO流(13)
IO流用来处理设备之间的数据传输.可以实现文件复制,上传文件和下载文件. Jdk提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输 ...
- 2018.4.13 用java配置/生成Xml文件 结合IO流知识点
自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7; impor ...
- 今天谈谈流,什么是IO流?
无标题 (5) :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { bord ...
- JavaEE基础(二十二)/IO流
1.IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: ...
- JavaEE基础(二十一)/IO流
1.IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. 2 ...
- JavaEE基础(二十)/IO流
1.IO流(IO流概述及其分类) 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操作类型分 ...
- Java IO流详尽解析
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- Java笔记(二十六)……IO流上 字节流与字符流
概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...
- 常用的IO流
常用的IO流 •根据处理数据类型的不同分为:字节流和字符流 •根据数据流向不同分为:输入流和输出流 字节流:字节流以字节(8bit)为单位,能处理所有类型的数据(如图片.avi等). 字节输入流:In ...
随机推荐
- sklearn中,数据集划分函数 StratifiedShuffleSplit.split() 使用踩坑
在SKLearn中,StratifiedShuffleSplit 类实现了对数据集进行洗牌.分割的功能.但在今晚的实际使用中,发现该类及其方法split()仅能够对二分类样本有效. 一个简单的例子如下 ...
- 如何让Android 支持HEIF 图片解码和加载(免费的方法)
字节跳动火山引擎ImageX提供了一种能力,可以支持客户端android 直接解码HEIF 和HEIC图片,经过测试发现,可以免费使用: 一.阅前准备 HEIF图片格式是什么? 高效率图像格式(Hig ...
- openresty 学习笔记二:获取请求数据
openresty 学习笔记二:获取请求数据 openresty 获取POST或者GET的请求参数.这个是要用openresty 做接口必须要做的事情.这里分几种类型:GET,POST(urlenco ...
- descriptor 'decode' requires a 'bytes' object but received a 'NoneType'
记录在使用python过程中踩的坑------ 使用xlwt库对excel文件进行保存时报错 descriptor 'decode' requires a 'bytes' object but rec ...
- 点云配准的端到端深度神经网络:ICCV2019论文解读
点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...
- 网络模型mAP计算实现代码
网络模型mAP计算实现代码 一.mAP精度计算 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是: 1)True posi ...
- 大规模数据处理Apache Spark开发
大规模数据处理Apache Spark开发 Spark是用于大规模数据处理的统一分析引擎.它提供了Scala.Java.Python和R的高级api,以及一个支持用于数据分析的通用计算图的优化引擎.它 ...
- 我的第一部原创《JavaScript 全栈开发》正式上市了!
在经过了漫长的创作.审校过程之后,<JavaScript 全栈开发>终于迎来了在各大平台上正式出版的日子,以下是这本书的基本信息: 出品方: 异步社区:https://www.epubit ...
- Firfox、Chrome之python-selenium环境搭建
公共步骤: 一.文件下载 下载地址: python安装包:https://www.python.org/getit/ PyCharm 安装包:http://www.jetbrains.com/pych ...
- UiPath 中 List 集合的实例化与使用
>>>跳过BB,空降正文<<< 目录 前言 正文 1. 创建 List 变量 2. 实例化 List 变量 3. 集合的使用 后记 前言 大家好呀,我是 白墨,一个 ...