本文对JavaIO流的编程练习题做解答,里面有详细的思路解析,做题时最好养成先写思路在编程的习惯。
1.在程序中写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
package com.xykj.lesson5;
import java.io.File;
import java.io.FileOutputStream;
public class Test5 {
/**
* 在程序中写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
*
* 程序分析:文件写入,要用到输出流FileOutputStream
* */
public static void main(String[] args) {
// 向文件D:/Hello.txt,写入内容
File file = new File("D:/Hello.txt");
try {
// 创建输出流
FileOutputStream fos = new FileOutputStream(file);
//把String类型的字符串转化为byte数组的数据保存在输出流中
fos.write("HelloJavaWorld你好世界".getBytes());
fos.flush();//刷新输出流
fos.close();//关闭输出流
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)
package com.xykj.lesson6;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test6 {
/**
* 拷贝一张图片,从一个目录到另外一个目录下(PS:是拷贝是不是移动)
*
* 程序设计思路:
* 这题不能使用renameTo,
* 解题步骤:
* 1、在目的地址创建一个图片文件
* 2、读取源地址文件的字节流
* 3、把读取到的字节流写入到目的地址的文件里面
* 4、刷新输出流,并关闭就可以了
*
* @throws Exception
* */
public static void main(String[] args) {
// 本题示范把D盘下的mm.jpg复制到D盘java文件夹里面
// 源文件地址
File fileFrom = new File("D:/mm.jpg");
// 目的文件地址
File fileTo = new File("D:/java/mm.jpg");
// 1、创建目的文件地址
try {
if (!fileTo.createNewFile()) {
System.out.println("创建文件失败!");
}
// 2、读取源地址文件的字节流
FileInputStream fis = new FileInputStream(fileFrom);
FileOutputStream fos = new FileOutputStream(fileTo);
int len = 0;
byte[] buf = new byte[1024];
while ((len = fis.read(buf)) != -1) {
// 3、把读取到的字节流写入到目的地址的文件里面
fos.write(buf, 0, len);
}
// 刷新下输出流
fos.flush();
// 关闭输入流和输出流
fis.close();
fos.close();
System.out.println("文件复制成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.统计一个文件calcCharNum.txt(见附件)中字母'A'和'a'出现的总次数
package com.xykj.lesson7;
import java.io.File;
import java.io.FileInputStream;
public class Test7 {
/**
* 统计一个文件calcCharNum.txt(见附件)中字母'A'和'a'出现的总次数
*
* 程序分析:
* 读取文件用FileInputStream
* 一次只读一个字节(一个字母就是一个字节),当字节内容和A或a相等时,相应的数量加1
* */
public static void main(String[] args) {
try {
//添加文件路径
File file = new File("D:/java/calcCharNum.txt");
//创建文件读取流
FileInputStream fis = new FileInputStream(file);
int numA = 0;//字母A的数量
int numa = 0;//字母a的数量
int len = 0;//每次读取的字节数量
while ((len=fis.read())!= -1) {
//统计字母a的数量
if (new String((char)len+"").equals("a")) {
numa++;
}
//统计字母A的数量
if (new String((char)len+"").equals("A")) {
numA++;
}
}
//打印出文件内字母的数量
System.out.println("a的数量是:"+numa);
System.out.println("A的数量是:"+numA);
System.out.println("a和A出现的总次数:"+(numA+numa));
fis.close();//关闭输入流
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.统计一个文件calcCharNum.txt(见附件)中各个字母出现次数:A(8),B(16),C(10)...,a(12),b(10),c(3)....,括号内代表字符出现次数;
package com.xykj.lesson8;
import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
public class Test8 {
/**
* 统计一个文件calcCharNum.txt(见附件)中各个字母出现次数:
* A(8),B(16),C(10)...,a(12),b(10),c(3)....,括号内代表字符出现次数;
*
* 程序分析:
* 1.这里没中文字符,依然可以只用字节流来读取文件
* 2.不能保存相同的主键值,可以使用HashMap:key-value来实现
* 3.先获得该key的value,如果存在key的话value的值加1
* */
public static void main(String[] args) {
// 文件路径
File file = new File("D:/java/calcCharNum.txt");
try {
// 创建读取文件的输入流
FileInputStream fis = new FileInputStream(file);
// 创建集合HashMap类存放要保存的key-value
HashMap map = new HashMap<>();
// 读取文件
int len = 0;// 每次读取的文件长度
int count = 0;
while ((len = fis.read()) != -1) {
// 每次获取到的字母
char c = (char) len;
//这里使用try catch是因为 map.get(c + ""),第一次get不到东西会出现空指针
try {
// 通过每次的key值获取它的value值,
// 但是在它的key值没有时或报空指针错误,所以要try catch处理
// 当她有key值,就可以获取到相应的value值
count = map.get(c + "");
} catch (Exception e) {// 什么都不用输出
}
// 如果有它的key值对应的value值要加1
map.put(c + "", count + 1);
}
fis.close();
// 读完后把结果打印出来
//迭代器的使用
Iterator> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Entry entry = iterator.next();
System.out.print(entry.getKey() + "(" + entry.getValue()+ ") ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上就是极悦java培训机构的小编针对“Java io流编程练习题,经典系列(一)”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习