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流)的更多相关文章

  1. Java基础-IO流(13)

    IO流用来处理设备之间的数据传输.可以实现文件复制,上传文件和下载文件. Jdk提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输 ...

  2. 2018.4.13 用java配置/生成Xml文件 结合IO流知识点

    自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7; impor ...

  3. 今天谈谈流,什么是IO流?

    无标题 (5) :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { bord ...

  4. JavaEE基础(二十二)/IO流

    1.IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: ...

  5. JavaEE基础(二十一)/IO流

    1.IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. 2 ...

  6. JavaEE基础(二十)/IO流

    1.IO流(IO流概述及其分类) 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操作类型分 ...

  7. Java IO流详尽解析

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. Java笔记(二十六)……IO流上 字节流与字符流

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  9. 常用的IO流

    常用的IO流 •根据处理数据类型的不同分为:字节流和字符流 •根据数据流向不同分为:输入流和输出流 字节流:字节流以字节(8bit)为单位,能处理所有类型的数据(如图片.avi等). 字节输入流:In ...

随机推荐

  1. 03-用三种方法设置CentOS7使用代理服务器上网

    一.永久设置 编辑配置文件 vi /etc/profile 在文件后添加以下内容: export http_proxy='http://代理服务器IP:端口号' export https_proxy= ...

  2. web技术开发桌面应用

    三款前端工程师桌面应用开发神器! http://mini.eastday.com/a/160630023107669-2.html 如果我告诉你,以后你们可以用前端语言(html5+css3+js)开 ...

  3. 【JDK命令行 一】手动编译Java源码与执行字节码命令合集(含外部依赖引用)

    写作目标 记录常见的使用javac手动编译Java源码和java手动执行字节码的命令,一方面用于应对 Maven 和 Gradle 暂时无法使用的情况,临时生成class文件(使用自己的jar包):另 ...

  4. VMware Cloud Foundation 4.2 发布 - 领先的混合云平台

    VMware Cloud Foundation 4.2 | 09 FEB 2021 | Build 17559673 VMware Cloud Foundation 4.1 | 06 OCT 2020 ...

  5. 游刃于私有网络与公共网络之间的NAT

    网络地址转化技术NAT 1. 应用场景 2. NAT 2.1 静态NAT 2.2 动态NAT 2.3 NAPT 2.4 EASY IP 3. NAT配置 3.1 静态NAT 3.2 动态NAT 3.3 ...

  6. 再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件

    相信大家应该都接触过Linux操作系统(Ubuntu.Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器. 常用的ssh工具主要有:Xshell.MobaXt ...

  7. 如何让Android 支持HEIF 图片解码和加载(免费的方法)

    字节跳动火山引擎ImageX提供了一种能力,可以支持客户端android 直接解码HEIF 和HEIC图片,经过测试发现,可以免费使用: 一.阅前准备 HEIF图片格式是什么? 高效率图像格式(Hig ...

  8. Go语言网络通信---多用户连续通信的TCP编程

    server端: package main import ( "fmt" "net" ) func main() { //建立监听 listener, err ...

  9. GO语言常用标准库03---time包

    package main import ( "fmt" "time" ) func main021() { nowTime := time.Now() fmt. ...

  10. GPU自动调度卷积层

    GPU自动调度卷积层 本文对GPU使用自动调度程序. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,无需任何调度命令或模板.自动调度程序 ...