第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 ...
随机推荐
- linux 创建网桥
由于最近项目需验证个问题,需求是要创建一个虚拟机网桥,在使用ifconfig命令查看时让docker0网桥不在第一个显示,因此,我们创建一个虚拟网桥让它排在第一位置 项目使用Centos7系统,因此使 ...
- 用JILINK 下载HEX文件
https://wenku.baidu.com/view/f51300f55f0e7cd1842536e1.html
- Java中单列集合List排序的真实应用场景
一.需求描述 最近产品应客户要求提出了一个新的需求,有一个列表查询需要按照其中的多列进行排序. 二.需求分析 由于数据总量不多,可以全部查询出来,因此我就考虑使用集合工具类Collections.so ...
- .NET平台系列12 .NET未来之开源.NET Core
系列目录 [已更新最新开发文章,点击查看详细] 微软于2014年11月推出了.NET Core 1.0..NET Core的目标是从我们在过去12年中对.NET Framework的构建.交付 ...
- [leetcode] 874. 行走机器人模拟(周赛)
874. 行走机器人模拟 模拟 描述方向时有个技巧:int[][] dx = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; 分别存储机器人向上.右.下.左走时,坐标应该如何变 ...
- TPS和响应时间之间是什么关系
在这个图中,定义了三条曲线.三个区域.两个点以及三个状态描述. 三条曲线:吞吐量的曲线(紫色).使用率 / 用户数曲线(绿色).响应时间曲线(深蓝色).三个区域:轻负载区(Light Load).重负 ...
- HashMap源码:聊聊Map的遍历性能问题(一)
目录 引言 迭代器测试 迭代器源码探究 其他遍历方法 增强型for循环 Map.forEach Stream.forEach 总结 附:四种遍历源码 附:完整测试类与测试结果+一个奇怪的问题 引言 今 ...
- deeplearning模型分析
deeplearning模型分析 FLOPs paddleslim.analysis.flops(program, detail=False) 获得指定网络的浮点运算次数(FLOPs). 参数: pr ...
- CMOS图像传感器同时感知和处理光学图像
CMOS图像传感器同时感知和处理光学图像 概述 近年来,机器视觉技术有了巨大的飞跃,现在已经成为各种智能系统的一个组成部分,包括自主车辆和机器人.通常,视觉信息由基于帧的摄像机捕获,转换成数字格式,然 ...
- 用java实现图书管理系统。
图书管理系统. 一.项目设计到的知识 1.MVC设计模式思想(分包) >项目分包 >MVC简单介绍 2.GUI(图形化界面) 3.JDBC连接MySql数据库 4.I/O流 5.面向对象思 ...