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. Python小白的数学建模课-A1.国赛赛题类型分析

    分析赛题类型,才能有的放矢. 评论区留下邮箱地址,送你国奖论文分析 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. 数模竞赛国赛 A题类型分析 年份 题目 要 ...

  2. Asp.Net Core Api 使用Swagger管理文档教程的安装与使用

    这周因为公司的需求需要我做一个Api的程序,这周的三天时间我一直在Core Api和 framework Api之间做纠结.不知道要使用哪一个去做项目,想着想着就决定了.既然两个我都没用过那个何不来使 ...

  3. gst-crypto GStreamer插件

    gst-crypto GStreamer插件 内容 1. gst-crypto概述 1.1gst-crypto GStreamer插件功能 1.2用例范例 2. GStreamer插件支持 3. 在本 ...

  4. 【NX二次开发】缝合片体例子UF_MODL_create_sew

    缝合片体,没有成功缝合的片体涂绿色. 效果:  源码: extern DllExport void ufusr(char *param, int *returnCode, int rlen) { UF ...

  5. Redis 面试题 - 收藏版 (持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  6. 惊呆了,Spring Boot居然这么耗内存!

    Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务,但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起.如 ...

  7. 【模拟8.01】string(线段树)

    因为题中只有a-z,所以区间中大量字母都是重复的,我们不妨利用桶的性质. 开一棵树,里面维护当前区间内的相同元素,若区间内元素不同,则为零 每次升序操作就先查询一遍区间,用桶将每个区间的a-z元素统计 ...

  8. 【模拟7.29】大佬(概率期望DP)

    首先根据数据范围,可以判断基本上是n^2的复杂度 通过分析我们发现每一次都可以从m个数中任意选,既然任意选,那么此时的概率的分母就是不变的,然而题中涉及的是某一段的最大值,所以我们按套路假设 f[i] ...

  9. 查询表空间总大小(dba_data_files和dba_segments,dba_free_space区别)

    1, dba_data_files,dba_segments,dba_free_space得出结论:一般情况下(没有drop表的时候):dba_data_files bytes = (dba_segm ...

  10. Jenkins 进阶篇 - 节点配置

    当我们使用 Jenkins 构建的项目达到一定规模后,一个 Jenkins 服务可能承受不了负载,会导致很多的构建任务堆积,严重的话还会拖垮这台服务器,导致上面的服务无法使用.例如我们公司目前在 Je ...