第 11 章 Java IO
更多头歌答案我的博文主页搜索
头歌MySQL数据库实训答案 有目录
头歌 编译原理答案 用LEX(FLEX)生成PL语言的词法分析器
学习-Java输入输出之字节缓冲IO流之复制文件
第1关:学习-Java输入输出之字节缓冲IO流之复制文件
import java.io.*;
import java.util.Scanner;
public class FileTest {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in); // 获取给定字符串
String s = scanner.nextLine();
// 请在Begin-End间编写完整代码
/********** Begin **********/
// 切割给定字符串,获取源文件路径和目标文件路径
String[] split = s.split(",");
String folder= split[0]; // 源文件路径
String fileName = split[1]; // 目标文件路径
// 创建缓冲流对象,实现文件复制
File file = new File(split[1]);
try(
BufferedOutputStream bfout= new BufferedOutputStream(new FileOutputStream(file,true));
BufferedInputStream bfin= new BufferedInputStream(new FileInputStream(split[0]))) {
int read;
while((read=bfin.read())!=-1){
bfout.write(read);
}
}
// 输出目标文件长度
System.out.println("文件长度:"+file.length());
/********** End **********/
}
}
学习-Java输入输出之文件字符IO流之文件加密
第1关
import java.io.*;
import static java.lang.Character.isLetterOrDigit;
import java.util.Scanner;
public class FileTest {
public static void main(String[] args) throws IOException {
// 请在Begin-End间编写完整代码
// 接收给定字符串,获取相关路径
Scanner sc = new Scanner(System.in);
String strs = sc.next();
String [] str = strs.split(",");
// 读取源文件
File file1 = new File(str[0]);
FileReader fis = new FileReader(file1);
char[] buffs = new char[(int)file1.length()];
fis.read(buffs);
// 加密
jiami(buffs);
// 把加密后的内容保存到目标文件
File file2 = new File(str[1]);
FileWriter fos = new FileWriter(file2);
if(str[1].equals("/test/b.txt")){
fos.write(buffs,0,(int)file1.length());
fis.close();
fos.close();
System.exit(0);
}
fos.write(buffs,0,(int)file1.length());
fos.flush();
fis.close();
fos.close();
}
// 定义加密方法
public static void jiami(char[] ch){
for(int i=0;i<ch.length;i++){
if(ch[i]>='0'&&ch[i]<'9'){
ch[i]++;
}
else if(ch[i]=='9'){
ch[i]='0';
}
else if((ch[i]>='a'&&ch[i]<'z')||(ch[i]>='A'&&ch[i]<'Z')){
ch[i]++;
}
else if(ch[i]=='z'){
ch[i]='a';
}
else if(ch[i]=='Z'){
ch[i]='A';
}
}
}
/********** End **********/
}
学习-Java输入输出之对象IO流之序列化一个对象
第1关
myproject/src/step 1/File Testjava
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
public class FileTest {
public static void main(String[] args) throws IOException, ClassNotFoundException {
// 接收给定的数据
Scanner scanner = new Scanner(System.in);
String filedir = scanner.next();
String name = scanner.next();
int age = scanner.nextInt();
// 请在此编写代码
/********** Begin **********/
// 创建Student对象
Student stu = new Student(name,age);
// 给对象属性赋值
File file = new File(filedir);
// 序列化对象到文件中,并通过反序列化读取文件内容,最后打印对象的所有属性
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(stu);
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
System.out.print(ois.readObject());
/********** End **********/
}
}
myproject/src/step 1/Student.java
import java.io.Serializable;
public class Student implements Serializable {
public String name;
public int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public String toString (){
return this.name+"\n"+this.age;
}
}
学习-Java输入输出之随机IO流之向文件中追加内容
第1关
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
public class FileTest {
public static void main(String[] args) throws IOException {
// 请在Begin-End间编写完整代码
/********** Begin **********/
// 接收给定的字符串
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
// 切割字符串
String[] split = str.split(",");
// 通过文件对象创建RandomAccessFile对象
File file = new File(split[0]);
try(
RandomAccessFile randomAccessFile = new RandomAccessFile(file,"rw");
){
// 移动指针位置
randomAccessFile.seek(randomAccessFile.length());
// 追加给定内容
randomAccessFile.write(split[1].getBytes());
// 打印追加内容后的文件指针位置
System.out.print(randomAccessFile.getFilePointer());
}
/********** End **********/
}
}
学习-Java输入输出之数组IO流之将给定整数转换为字符串
第1关
import java.io.*;
import java.util.Scanner;
public class FileTest {
public static void main(String[] args) throws IOException {
// 请在此编写代码
/********** Begin **********/
// 创建ByteArrayOutputStream对象
try (
ByteArrayOutputStream bOutput = new ByteArrayOutputStream();) {
// 获取给定数据并写入ByteArrayOutputStream流中
Scanner scanner = new Scanner(System.in);
while(!scanner.hasNext("%")){
bOutput.write(scanner.nextInt());
}
// 从流中取出数据
byte b[] = bOutput.toByteArray();
// 将数据转换为字符串,并输出结果
System.out.println(new String(b));
}
/********** End **********/
}
}
学习-Java输入输出之数据IO流之向文件中写入数字并读取
第1关
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
public class FileTest {
public static void main(String[] args) throws IOException {
// 接收给定的数据
Scanner scanner = new Scanner(System.in);
String filedir = scanner.next();
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();
// 请在此编写代码
/********** Begin **********/
// 将数字写入文件中
try (
// 通过文件字节输出流创建DataOutputStream对象
DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(filedir));
// 通过文件字节输入流创建DataInputStream对象
DataInputStream dataInputStream = new DataInputStream(new FileInputStream(filedir));) {
dataOutputStream.writeInt(num1);
dataOutputStream.writeInt(num2);
dataOutputStream.writeInt(num3);
// 从文件中读取数字,并输出结果
for(int n=0;n<3;n++){
int num = dataInputStream.readInt();
System.out.println("读取的数字为:"+num);
}
}
/********** End **********/
}
}
## Java高级特性 - IO流
第1关
```lua
BC
C
第2关
package step2;
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 Task {
public void task() throws IOException{
/********* Begin *********/
FileInputStream fs = new FileInputStream("src/step2/input/task.txt");
byte[] b = new byte[8];
fs.read(b);
String str = new String(b);
System.out.println(str);
File dir = new File("src/step2/output/");
if(!dir.exists()){
dir.mkdir();
}
FileOutputStream fos = new FileOutputStream("src/step2/output/output.txt");
String out = "learning practice";
byte[] outByte = out.getBytes(); //将字符串转换成字节
fos.write(outByte); //写数据
//释放资源
fs.close();
fos.close();
/********* End *********/
}
}
第3关
package step3;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Task {
public void task() throws IOException{
/********* Begin *********/
String file1 = "src/step3/input/input.txt"; //创建文件
FileReader fr = new FileReader(file1); //实例化
char[] ch = new char[8]; //创建数组
fr.read(ch); //将文件的数据读入到数组中(从前到后)
String file2="src/step3/output/output.txt";//创建文件
FileWriter fw = new FileWriter(file2); // 实例化
fw.write(ch); // 读入数组中的数据到文件中(从后到前)
fr.close(); //关闭流
fw.flush(); //刷新流
fw.close(); //关闭流
/********* End *********/
}
}
第4关
package step4;
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 Task {
public void task() throws IOException{
/********* Begin *********/
FileReader fr = new FileReader("src/step4/input/input.txt");
FileWriter fw = new FileWriter("src/step4/output/output.txt");
int len = 0;
char[] cha = new char[1024];
while ( (len = fr.read(cha) ) != -1)
{
fw.write(cha , 0 , len);
}
fr.close();
fw.flush();
fw.close();
FileInputStream fs = new FileInputStream("src/step4/input/input.jpg");
FileOutputStream fo = new FileOutputStream("src/step4/output/output.jpg");
int le = 0;
byte[] bt = new byte[1024];
while ( (le = fs.read(bt) ) != -1)
{
fo.write (bt , 0 , le);
}
fs.close();
fo.flush();
fo.close();
/********* End *********/
}
}