在千锋“逆战”学习第32天 io练习(2)

在千锋"逆战”学习第32天,
每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运!
加油!

1
( File 类)以下关于File 类说法正确的是:
A.一个File对象代表了操作系统中的一个文件或者文件夹
B.可以使用File对象创建和删除一 个文件
C,可以使用File对象创建和删除- 个文件夹
D.当-个File对象被垃圾回收时,系统上对应的文件或文件夹也被删除
ABC
2( File类)将下列代码补充完整

class TestMyFile{ 
public static void main(String args[]) throws Exception{ 
File file; 
//创建一个 File 对象表示当前目录下的“hello.txt”文件
//判断该文件是否存在
//如果该文件存在,则输出该文件的完整路径
} 
}

public class Test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file;
		file=new File("hello.txt");
		if(file.exists()) {
			System.out.println(file.getAbsolutePath());
		}
	}

}
9(Data 流)利用 Data 流,完成下面操作:

1) 判断当前目录下是否存在一个“test.dat”的文件,如果该文件不存在,
则往该文件中写入一个 long 类型的数值:10000L
2) 如果该文件存在,则从该文件中读出数值,并把该数值加 1 之后,再存
回文件中。

public class Test9 {
	public static void main(String[] args) throws Exception {
		File file=new File("test.dat");
		if(!file.exists()) {
			OutputStream os=new FileOutputStream("test.dat");
			DataOutputStream dw=new DataOutputStream(os);
			dw.writeLong(10000);
			dw.close();
		}else {
			InputStream os=new FileInputStream("test.dat");
			DataInputStream dw=new DataInputStream(os);
			Long ll=dw.readLong();
			ll=ll+1;
			DataOutputStream ds=new DataOutputStream(new FileOutputStream("test.dat"));
			ds.writeLong(ll);
			System.out.print(ll);
			dw.close();
			ds.close();
		}
	}
}
10
(字符流、桥转换)要想从某个文件中获得一个字符输出流 ,则至少有以下三种方式:
A.利用FileWriter类
B.利用PrintWriter类
C.利用FileOutputStream类,并通过OutputStreamWriter类获得Writer请简述这三种方式获得Writer的区别。
A FileWriter	用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和
默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在
 FileOutputStream 上构造一个 OutputStreamWriter。
B PrintWriter	向文本输出流打印对象的格式化表示形式。此类实现在
 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对
 于这些字节,程序应该使用未编码的字节流进行写入。与 PrintStream 类
 不同,如果启用了自动刷新,则只有在调用 println、printf 或 format 的其
 中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。
 这些方法使用平台自有的行分隔符概念,而不是换行符。此类中的方法不
 会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。客户端可能会查询
 调用 checkError() 是否出现错误。
C FileOutputStream+FileOutputStreamWriter	文件输出流是用于将数据
写入 File 或 FileDescriptor 的输出流。文件是否可用或能否可以被创建取决
于基础平台。特别是某些平台一次只允许一个 FileOutputStream(或其他文
件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经
打开,则此类中的构造方法将失败。FileOutputStream 用于写入诸如图像
数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。
11
(字节流、字符流)以下几种文件格式,应当使用字节流还是字符流?
I. java源文件
I. .class字节码文件
I. .html网页文件
IV. jpg图像文件
V.
.mp3音乐文件

1. 字节流【2、4、5、7】
2. 字符流【1、3、6】
14
事先在当前目录下准备好一个 test.txt 的文本文件,要求该文本文件是使用
GBK 编码的多行文本文件。如:
test.txt 
窗前明月光
疑是地上霜
举头望明月
低头思故乡
利用字节流+桥转换读入这个文本文件,然后按照行的顺序,以 UTF-8 的编码方
式,写到 test2.txt 文件中,例:
test2.txt 
低头思故乡
举头望明月
疑是地上霜
窗前明月光
		BufferedReader r=new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"),"GB2312"));
		PrintWriter w=new PrintWriter(new OutputStreamWriter(new FileOutputStream("text2.txt"),"UTF-8"));
		List<String> list=new ArrayList<>();
		while(true) {
			String s=r.readLine();
			if(s == null) {
				break;
			}
			list.add(s);
		}
		for(String line:list) {
			w.println(line);
			
		}
		w.close();
		r.close();
	}

}
17
在当前目录下创建一个 worldcup.txt 的文本文件,其格式如下:
2006/意大利
2002/巴西
„
该文件采用“年份/世界杯冠军”的方式保存每一年世界杯冠军的信息。
要求:读入该文件的基础上,让用户输入一个年份,输出该年的世界杯冠军。如
果该年没有举办世界杯,则输出“没有举办世界杯”
public class Test17 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader r=new BufferedReader(new InputStreamReader(new FileInputStream("worldcup.txt")));
		HashMap<String,String> h=new HashMap<String,String>();
		String s;
		String[] c=new String[2];
		while((s=r.readLine())!=null) {
			c=s.split("/");
			h.put(c[0], c[1]);
		}
		String v;
		int count=0;
		Scanner sc=new Scanner(System.in);
		v=sc.next();
		for(String i:h.keySet()) {
			if(i.equals(v)) {
				System.out.println(i+ "年的世界杯冠军是:" + h.get(i));
				count++;
			}
		}
		if(count==0) {
			 System.out.println("该年没有举办世界杯!");
		}
	}

}
18
从命令行中读入一个文件名,判断该文件是否存在。如果该文件存在,则在原文
件相同路径下创建一个文件名为“copy_原文件名”的新文件,该文件内容为原
文 件 的 拷 贝 。 例 如 : 读 入 /home/java/photo.jpg 则 创 建 一 个 文 件
/home/java/copy_photo.jpg 新文件内容和原文件内容相同。
public class Test18 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个路径:");
		String s = input.next();
		File file=new File(s);
		if(file.exists()) {
			BufferedReader r=new BufferedReader(new InputStreamReader(new FileInputStream(s),"GB2312"));
			PrintWriter w=new PrintWriter(new OutputStreamWriter(new FileOutputStream("copy_"+s),"UTF-8"));
			
			while(true) {
				String ss=r.readLine();
				if(ss==null) {
					break;
				}
				w.println(ss);
			}
			w.close();
			r.close();

		}
	}

}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值