IO流练习

3:复制文本文件:有5种方式

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
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 Copytxt {
public static void main(String[] args) throws IOException {
    method1();
    method2();
    method3();
    method4();
    method5();
}

private static void method5() throws FileNotFoundException, IOException {
    BufferedReader br=new BufferedReader(new FileReader("ArrayListInHashMap.java"));
    BufferedWriter bw=new BufferedWriter(new FileWriter("e.txt"));
    String line=null;
    while((line=br.readLine())!=null) {
        bw.write(line);
        bw.newLine();
    }
    br.close();
    bw.close();
}

private static void method4() throws FileNotFoundException, IOException {
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream("ArrayListInHashMap.java"));
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("d.txt"));
    byte[] bys=new byte[1024];
    int len=0;
    while((len=bis.read(bys))!=-1) {
        bos.write(bys, 0, len);
    }
    bos.close();
    bis.close();
}

private static void method3() throws FileNotFoundException, IOException {
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream("ArrayListInHashMap.java"));
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("c.txt"));
    int by=0;
    while((by=bis.read())!=-1) {
        bos.write(by);
    }
    bos.close();
    bis.close();
}

private static void method2() throws FileNotFoundException, IOException {
    FileInputStream fis=new FileInputStream("ArrayListInHashMap.java");
    FileOutputStream fos=new FileOutputStream("a.txt");
    byte[] bys=new byte[1024];
    int len=0;
    while((len=fis.read(bys))!=-1) {
        fos.write(bys, 0, len);
    }
    fos.close();
    fis.close();
}

private static void method1() throws FileNotFoundException, IOException {
    FileInputStream fis=new FileInputStream("ArrayListInHashMap.java");
    FileOutputStream fos=new FileOutputStream("b.txt");
    int by=0;
    while((by=fis.read())!=-1) {
        fos.write(by);
    }
    fos.close();
    fis.close();
}
}

4:复制图片:4种方式

public class CopyJpg {
public static void main(String[] args) throws IOException {
    method1();
    method2();
    method3();
    method4();

}

private static void method4() throws FileNotFoundException, IOException {
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream("timg.jpg"));
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("d.jpg"));
    byte[] bys=new byte[1024];
    int len=0;
    while((len=bis.read(bys))!=-1) {
        bos.write(bys, 0, len);
    }
    bos.close();
    bis.close();
}

private static void method3() throws FileNotFoundException, IOException {
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream("timg.jpg"));
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("c.jpg"));
    int by=0;
    while((by=bis.read())!=-1) {
        bos.write(by);
    }
    bos.close();
    bis.close();
}

private static void method2() throws FileNotFoundException, IOException {
    FileInputStream fis=new FileInputStream("timg.jpg");
    FileOutputStream fos=new FileOutputStream("b.jpg");
    byte[] bys=new byte[1024];
    int len=0;
    while((len=fis.read(bys))!=-1) {
        fos.write(bys, 0, len);
    }
    fos.close();
    fis.close();
}

private static void method1() throws FileNotFoundException, IOException {
    FileInputStream fis=new FileInputStream("timg.jpg");
    FileOutputStream fos=new FileOutputStream("a.jpg");
    int by=0;
    while((by=fis.read())!=-1) {
        fos.write(by);
    }
    fos.close();
    fis.close();
}
}

5:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”
请编写程序读取数据内容,把数据排序后写入ss.txt中。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;



public class CopyString {
public static void main(String[] args) throws IOException {
    FileInputStream fis=new FileInputStream("String.txt");
    FileOutputStream fos=new FileOutputStream("StringSort.txt");
    ArrayList<Character> al=new ArrayList<Character>();
    int by=0;
    while((by=fis.read())!=-1) {
        al.add((char)by);
    }
    Collections.sort(al);
    for(Character s:al) {
        fos.write((int)s);
    }
}
}

String.txt内容:hcexfgijkamdnoqrzstuvwybpl
StringSort.txt内容:abcdefghijklmnopqrstuvwxyz

6:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

package weekends_10;

import java.io.Serializable;

public class Student implements Serializable,Comparable<Student>{
    String name;
public Student(String name, String chinese, String math, String english) {
        super();
        this.name = name;
        Chinese = chinese;
        this.math = math;
        English = english;
    }
public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
String Chinese;
String math;
String English;
public String getChinese() {
    return Chinese;
}
public void setChinese(String chinese) {
    Chinese = chinese;
}
public String getMath() {
    return math;
}
public void setMath(String math) {
    this.math = math;
}
public String getEnglish() {
    return English;
}
public void setEnglish(String english) {
    English = english;
}
public int getSum() {
    return Integer.parseInt(Chinese)+Integer.parseInt(English)+Integer.parseInt(math);
}
public Student(String chinese, String math, String english) {
    super();
    Chinese = chinese;
    this.math = math;
    English = english;
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((Chinese == null) ? 0 : Chinese.hashCode());
    result = prime * result + ((English == null) ? 0 : English.hashCode());
    result = prime * result + ((math == null) ? 0 : math.hashCode());
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Student other = (Student) obj;
    if (Chinese == null) {
        if (other.Chinese != null)
            return false;
    } else if (!Chinese.equals(other.Chinese))
        return false;
    if (English == null) {
        if (other.English != null)
            return false;
    } else if (!English.equals(other.English))
        return false;
    if (math == null) {
        if (other.math != null)
            return false;
    } else if (!math.equals(other.math))
        return false;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    return true;
}
public Student() {
    super();
    // TODO Auto-generated constructor stub
}
@Override
public String toString() {
    return "Student [name=" + name + ", Chinese=" + Chinese + ", math=" + math + ", English=" + English + "]";
}
@Override
public int compareTo(Student s) {
    int num=s.getSum()-this.getSum();
    int num1=num==0?s.getName().compareTo(this.getName()):num;
    return num1;
}

}
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.TreeSet;

public class StudentDemo {
public static void main(String[] args) throws IOException {

TreeSet<Student> ts=new TreeSet<Student>();
Scanner sc=new Scanner(System.in);
for(int i=0;i<5;i++) {
    Student s=new Student();
    System.out.println("请输入第"+(i+1)+"个学生的名字");
    String name = sc.nextLine();
    s.setName(name);
    System.out.println("请输入第"+(i+1)+"个学生的数学成绩");
    String math = sc.nextLine();
    s.setMath(math);
    System.out.println("请输入第"+(i+1)+"个学生的英语成绩");
    String English = sc.nextLine();
    s.setEnglish(English);
    System.out.println("请输入第"+(i+1)+"个学生的语文成绩");
    String chinese = sc.nextLine();
    s.setChinese(chinese);
    ts.add(s);
}
FileWriter fos=new FileWriter("Student.txt");
for(Student s:ts) {
    fos.write("姓名"+s.getName());
    fos.write("  ");
    fos.write("总分"+String.valueOf(s.getSum()));
    fos.write("  ");
    fos.write("语文"+s.getChinese());
    fos.write("  ");
    fos.write("英语"+s.getEnglish());
    fos.write("  ");
    fos.write("数学"+s.getMath());
    fos.write("\r\n");
    fos.flush();
}
fos.close();
}
}

运行结果

姓名alice 总分450 语文190 英语140 数学120
姓名bob 总分430 语文130 英语120 数学180
姓名allen 总分320 语文100 英语130 数学90
姓名Tubo 总分320 语文100 英语120 数学100
姓名逝水流 总分257 语文78 英语89 数学90

### 黑马程序员 IO 练习题及实例代码 #### 关于 I/O 的概念 I/O 用于表示输入和输出的数据序列,在 Java 中,所有的 I/O 都位于 `java.io` 包下。通过这些类可以实现程序与外部资源之间的数据传输[^1]。 #### 文件加密解密案例分析 考虑一个简单的文件加解密例子来展示如何利用字节完成特定功能: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileEncryptDecrypt { public static void main(String[] args) { String srcFile = "source.txt"; String destFile = "encrypted.txt"; FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(srcFile); fos = new FileOutputStream(destFile); byte[] buffer = new byte[20]; int len; while ((len = fis.read(buffer)) != -1) { for (int i = 0; i < len; i++) { buffer[i] = (byte) (buffer[i] ^ 5); // 使用异或运算进行简单加密/解密 } fos.write(buffer, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (fos != null) fos.close(); } catch (IOException e) { e.printStackTrace(); } try { if (fis != null) fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } ``` 此段代码展示了如何读取源文件并将其内容写入目标文件的同时执行简单的加密操作。这里采用的是 XOR 操作作为基础的加密手段;同样的逻辑也可以用来做解密工作[^3]。 #### 缓冲区的应用说明 当调用 `InputStream` 的 `read(byte[])` 方法时,该方法尝试一次性填充整个传递过来的缓冲数组。如果当前可用的数据量不足以填满整个缓冲,则返回实际已读取的数量,并等待后续更多数据到来继续读取直到结束标志 `-1` 出现为止[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值