好几天没写博客了,玩了一两天,接着学习IO。
师兄特写嘱咐:不能使用baidu等搜索引擎,不能看书查资料,只允许查看java api。
刚开始师兄给了我们7-8道题目,只是给我们讲个大概,至于具体是怎么实现的则完全靠自己利用JAVA-API去摸索。
手动建立删除一个文件,文件夹以及显示相关信息-文件加密解密-复制文件内容-键盘读入用户的输入然后显示-键盘读入用户的输入然后存储-实现由键盘输入多行字符然后存储。
java知识是无限的,很多很多的类,而且继承类相当多。只能说只有学会了如何去学习利用API会才让我们在接下的编程过程能够减少搜索编译出错解决方案所花费的时间,更多是利用时间去学习新的知识!以下只是这几天的具体题目做法,至于深入了解IO以及APi则需要在接下来的时间好好研究好好利用工具。
至于具体的体会则在以下自己的代码中详细列出:
手动建立删除一个文件,文件夹以及显示相关信息-文件加密解密(集合一起):
import java.text.SimpleDateFormat;
import java.io.*;
public class IoTest1{
public static void main(String args[]){
//4.创建-删除-文件以及显示文件最后修改时间
String filepath="e:\\java\\io.txt";
File f=new File(filepath);
try{
//f.createNewFile();--创建一个文件
//f.delete();--删除
SimpleDateFormat change = new SimpleDateFormat("yyyy-MM-ss hh:mm:ss");
String time = change.format(f.lastModified());
System.out.print(time);
}catch(Exception e){
e.printStackTrace();
//System.out.println("你的路径有误");
//写入一个日志文件中
}
//5.创建文件夹--注意f1,f2的区别
/*File f1 = new File("e:\\java\\java讲授");
File f2 = new File("e:\\java\\视频\\IO流");
try{
f1.mkdir();
f2.mkdirs();
}
catch(Exception e){
e.printStackTrace();
}
*/
/*
//加密解密文件内容--file首先应该获取长度
String s = "e:\\java\\io.txt";
File f1=new File(s);
int i;
try{
RandomAccessFile f = new RandomAccessFile(s,"rw");//注意构造方法格式、可能会抛出异常
byte[] b=new byte[(int)f1.length()]; //创建数组
f.read(b);//传入参数
for(i=0;i<b.length;i++){
b[i]=(byte)(b[i]-12);
}
f.setLength(0);//清空内容
f.write(b);//重写写入改写内容-加密
}catch(Exception e){
e.printStackTrace();
}
*/
}
}
复制内容:
FileInputStream f1 = new FileInputStream(filepath1);//会抛出异常所以要包含在try里面
FileOutputStream f2 = new FileOutputStream(filepath2);
byte[] b = new byte[(int)f.length()];//返回long型,进行强制转换
f0.createNewFile();//先新建一个文件以便复制
f1.read(b);//读取
f2.write(b);//复制内容
键盘输入然后显示:
InputStreamReader isr = new InputStreamReader(System.in);
OutputStreamWriter osr = new OutputStreamWriter(System.out);
try{
int t ;
while((t=isr.read())!='\r'){ //enter键位ASC码为13,或者'\r'
osr.write(t);
}
使用InputStreamReader、FileReader、FileWriter实现从键盘输入字符,然后通过FileWriter存入一个指定的文件,最后通过FileReader类将内容从文件中读出,并显示在屏幕上:
InputStreamReader isr = new InputStreamReader(System.in);
try{
FileWriter f1 =new FileWriter(f);
FileReader f2 =new FileReader(f);
int t ;
while((t=isr.read())!='\r'){ //enter键位ASC码为13,或者'\r'
f1.write(t);
}
f1.flush();//需要刷新或者关闭之后读取才能显示出来
char[] cbuf = new char[(int)f.length()];
f2.read(cbuf,0,cbuf.length);
for(int i= 0;i<cbuf.length;i++){
System.out.print(cbuf[i]);
}
使用BufferedReader、BufferedWriter实现由键盘输入多行字符,并以end字符串结束,然后将输入内容存入到文件中,分行写入:
在这个里面需要利用好抽象类的应用。
try{
BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out=new BufferedWriter(new FileWriter("e:\\java\\io.txt"));
for(int i=0;!(t=in.readLine()).equals("end");i++){
out.write(t);
out.newLine();
}