1:Java 中根据流的方向,流分为 输入流 和 输出流 ;对应的操作分别为 读 和 写 。
2:Java 中字节流的父类为 InputStream 和 OutputStream ;以上 2个类都位于 java.io 包中
3:利用FileOutputStream(String path)创建对象时,如果对应的文件在硬盘上不存在,则会 在硬盘上创建文件, 如果对应的文件存在,则 覆盖 (覆盖 | 不覆盖)原有内容,参数代表 文件路径; 利用 有参 构造方法创建FileOutputStream 对象,将第二个参数设置为 true不会覆盖原有内容。
4:FileInputStream 有三个重载的read 方法,完成以下填空
(1)无参数的read()方法返回值为 int 类型,表示 返回获取值的哈希码
(2)有参数的read(byte[] bs)方法的返回值表示 返回实际读取个数 ,参数表示 读取的值哈希码存入数组中
5:下面关于FileInputStream 说法正确的是()
- 创建FileInputStream 对象是为了读取文件
- 创建FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常
- 创建FileInputStream 对象可以创建对应的文件
- FileInputStream 对象读取文件时,只能读取文本文件
6: 以下几种文件格式,应当使用字节流还是字符流?
A. java 源文件 字符流 B. .class 字节码文件 字节流
C. .html 网页文件 字符流 D. .jpg 图像文件 字节流
E. .mp3 音乐文件 字节流 F. .txt 文件 字符流
7:仔细阅读以下代码,将程序中不恰当的地方进行改正。
try(FileInputStream fin=new FileInputStream("test.txt")){
System.out.println(fin.read());
}catch (Exception e){
}
8:编程:利用 FileInputStream 和FileOutputStream,完成下面的要求
(1) 用FileOutputStream 往当前目录下“test.txt”文件中写入“Hello World”;
(2)利用FileInputStream 读入test.txt 文件,并在控制台上打印出test.txt 中的内容。
(3)要求用 try-catch-finally 处理异常,并且关闭流应放在 finally 块中。
package com.by.homework7;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;
import javax.imageio.IIOException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLOutput;
public class Test7 {
public static void main(String[] args) {
FileOutputStream fo=null;
FileInputStream fi=null;
try{
fo=new FileOutputStream("file/test.txt");
fi=new FileInputStream("file/test.txt");
String str="Hello World";
fo.write(str.getBytes());
fo.flush();
while(true) {
int n=fi.read();
if (n==-1){
break;
}
System.out.println(n);
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}finally {
if (fi!=null) {
try {
fi.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fo!=null){
try {
fo.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
9:编程:利用 IO 流,完成以下程序
(1)将 26 个大写字母(A~Z)写入到当前项目a.txt 文件中
(2) 读取文件中的内容,将读取的内容连接为一个字符串,并将所有的大写字母转变为小写字母打印输出转换的结果
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test8 {
public static void main(String[] args) {
FileOutputStream fo=null;
FileInputStream fi=null;
try{
fo=new FileOutputStream("file/a.txt");
fi=new FileInputStream("file/a.txt");
String str="ABCDEFGHIGKLMNOPQRSTUVWXYZ";
fo.write(str.getBytes());
fo.flush();
while(true) {
int n=fi.read();
if (n==-1){
break;
}
char c= (char) n;
String s= String.valueOf(c);
System.out.print(s.toLowerCase());
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}finally {
if (fi!=null) {
try {
fi.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fo!=null){
try {
fo.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
"C:\Program Files\Java\jdk1.8.0_341\bin\java.exe" "-javaagent:C:\Program com.by.homework7.Test8
abcdefghigklmnopqrstuvwxyz
10:编程:当前项目的根目录 c.txt 文件中的内容为”abddbskshlsjdhhhiw”;编写程序读取文件中的内容,要求去除重复的字母并按照字母的自然排序后将内容写入到当前项目的根目录 d.txt 文件中。
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class Test10 {
public static void main(String[] args) {
Set<String> set=new HashSet<>();
Set<String> set1=new TreeSet<>();
try(FileOutputStream fo=new FileOutputStream("file/d.txt");
FileInputStream fi=new FileInputStream("file/c.txt")
){
while (true){
int n=fi.read();
if (n==-1){
break;
}
char c= (char) n;
String str= String.valueOf(c);
set.add(str);
}
set1.addAll(set);
String str2= set1.toString();
/*for (String s:set1
) {
bytes=s.getBytes();
}*/
byte[] bytes = str2.getBytes();
fo.write(bytes);
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}
// set.forEach(string-> System.out.println(string));
// set1.addAll(set);
set1.forEach(string-> System.out.print(string));
}
}
11:使用字节节点流将 a~z 26个小写字母写入到“file\a.txt”文件中。
package com.by.homework7;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test11 {
public static void main(String[] args) {
try(FileOutputStream fo=new FileOutputStream("file/a1.txt");){
String str="abcdefghijklmnopqrstuvwxyz";
byte[] bs=str.getBytes();
fo.write(bs);
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}
}
}
12:使用字节节点流将第11题生成的文件内容读入到内存。
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test11 {
public static void main(String[] args) {
try(FileOutputStream fo=new FileOutputStream("file/a1.txt");
FileInputStream fi=new FileInputStream("file/a1.txt");){
String str="abcdefghijklmnopqrstuvwxyz";
byte[] bs=str.getBytes();
fo.write(bs);
fo.flush();
while (true){
int n=fi.read();
if (n==-1){
break;
}
System.out.println(n);
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}
}
}
13:使用字节节点流将第11题生成的文件进行拷贝备份“file\b.txt”。
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test13 {
public static void main(String[] args) {
try(FileOutputStream fo=new FileOutputStream("file/b1.txt");
FileInputStream fi=new FileInputStream("file/a1.txt");){
/* String str="abcdefghijklmnopqrstuvwxyz";
byte[] bs=str.getBytes();
fo.write(bs);
fo.flush();*/
while (true){
int n=fi.read();
if (n==-1){
break;
}
System.out.println(n);
fo.write(n);
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}
}
}
14:对第11、12题和第13题进行标准异常处理。
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test14 {
public static void main(String[] args) {
FileOutputStream fo=null;
FileInputStream fi=null;
try{
fo=new FileOutputStream("file/b1.txt");
fi=new FileInputStream("file/a1.txt");
/* String str="abcdefghijklmnopqrstuvwxyz";
byte[] bs=str.getBytes();
fo.write(bs);
fo.flush();*/
while (true){
int n=fi.read();
if (n==-1){
break;
}
System.out.println(n);
fo.write(n);
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}finally {
if (fi!=null){
try {
fi.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fo!=null){
try {
fo.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
15:使用字节流将第9题生成的文件读入到内存中
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test8 {
public static void main(String[] args) {
FileOutputStream fo=null;
FileInputStream fi=null;
try{
fo=new FileOutputStream("file/a.txt");
fi=new FileInputStream("file/a.txt");
String str="ABCDEFGHIGKLMNOPQRSTUVWXYZ";
fo.write(str.getBytes());
fo.flush();
while(true) {
int n=fi.read();
if (n==-1){
break;
}
char c= (char) n;
String s= String.valueOf(c);
System.out.print(s.toLowerCase());
/* int num=n+25;
char c=(char)num;
String s=String.valueOf(c);
System.out.print(s);*/
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}finally {
if (fi!=null) {
try {
fi.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (fo!=null){
try {
fo.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
16:使用流所学知识点将作业文件夹中图片“gril.jpg”复制到“file”文件下
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test16 {
public static void main(String[] args) {
try(
FileOutputStream fo=new FileOutputStream("file/girl.jpg");
FileInputStream fi=new FileInputStream("C:\\Users\\user\\Desktop\\java学习题\\IO1练习题-无对象过滤流/gril.jpg");
){
while (true){
int n=fi.read();
if (n==-1){
break;
}
fo.write(n);
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}
}
}
17:使用流所学知识点将作业文件夹中歌曲“Corporate.mp3”复制到“file”文件下
package com.by.homework7;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test17 {
public static void main(String[] args) {
try(
FileOutputStream fo=new FileOutputStream("file/1.mp3");
FileInputStream fi=new FileInputStream("C:\\Users\\user\\Desktop\\java学习题\\IO1练习题-无对象过滤流/Corporate.mp3");
){
while (true){
int n=fi.read();
if (n==-1){
break;
}
fo.write(n);
}
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}
}
}
18:为以上习题添加缓冲过滤流
package com.by.homework7;
import java.io.*;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class Test10 {
public static void main(String[] args) {
Set<String> set=new HashSet<>();
Set<String> set1=new TreeSet<>();
try(
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("file/d.txt"));
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("file/c.txt"));
/* FileOutputStream fo=new FileOutputStream("file/d.txt");
FileInputStream fi=new FileInputStream("file/c.txt");*/
){
while (true){
int n=bis.read();
if (n==-1){
break;
}
char c= (char) n;
String str= String.valueOf(c);
set.add(str);
}
set1.addAll(set);
String str2= set1.toString();
/*for (String s:set1
) {
bytes=s.getBytes();
}*/
byte[] bytes = str2.getBytes();
bos.write(bytes);
}catch (FileNotFoundException e){
System.out.println("文件路径有误");
}catch (IOException e){
System.out.println("文件读写有误");
}catch (Exception e){
System.out.println("未知错误");
}
// set.forEach(string-> System.out.println(string));
// set1.addAll(set);
set1.forEach(string-> System.out.print(string));
}
}