流、文件拷贝、序列化、随机数、DecimalForamt、Calendar、SimpleDateFormat

来源:互联网 发布:谈谈对网络借贷的认识 编辑:程序博客网 时间:2024/05/22 03:05

注意:以下一些代码会有一些常规性异常,捕获或抛出(try...catch or throws)即可
1.字节流->字符流   字符流输入方法
InputStream is = System.in;//标准输入
Reader reader = new InputStreamReader(is);//字节流->字符流
//伪缓存区
char[] c = new char[100];
int len = 0; //记录实际读取的长度
while((len = reader.read(c))!= -1){
//未经包装的流都是-1来判断是否文件读取结束????
String s = new String(c,0,len);
System.out.println(s);//quit\r\n
if(s.trim().equals("quit")){
System.out.println("over!");
System.exit(0); //正常结束
}
}
reader.close();


2.缓冲流(BufferedReader、BufferedWriter)
//获取源文件的输出流
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
//获取目标文件的输出流
BufferedWriter bw = new BufferedWriter(new FileWriter(dir,sourceFile.getName()));
String s = "";
while((s = br.readLine()) != null){
bw.write(s);
bw.NewLine(); //换行
bw.flush(); //针对字符流输出要刷新
}
bw.close();
br.close();


3.文件拷贝:字节流(视频,图片,等二进制文件) 字符流(文本文件)
InputStream is = new FileInputStream(sourceFile);
OutPutStream os = new FileOutputStream(new File(targetFile,sourceFile.getName()));
char[] b = new char[1024];
int len = 0;
while((len = is.read(b)) != -1){
os.write(b,0,len);
}
//后打开的,先关闭
os.close();
is.close();


4.Serializable 序列化
注:要序列化的对象必须实现Serializable接口(ArrayList已实现),最好加上唯一标识序列号(会自动生成),
用于反序列化。


序列化具体方法
FileOutputStream fos = new FileOutputStream(file);
//要经过Object包装一下
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(Object obj);//obj是一个对象,对应的类要实现Serializable接口
oos.close(); //关闭oos即可,不必关闭fos 

反序列化具体方法
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
Object obj = ois.readObject();//读取一个对象
ois.close();


5.RandomAccessFile 可随意位置访问文件(既不属于输入流,也不属于输出流)
读取文件方法(极类似字节流)
//以只读模式开启一个文件访问流
RandomAccessFile reader = new RandomAccessFile(sourceFile,"r");
//以读写模式开启一个文件访问流
RandomAccessFile writer = new RandomAccessFile(targetFile,"rw");
        //reader.seek(sourceFile.length()/2);//seek()设置文件访问指针的位置file.length()文件长度(大小)
//reader.getFilePointer();//获取当前指针位置
char[] b = new char[1024];
int len = 0;
while((len = reader.read(b)) != -1){

writer.write(b,0,len);
}
writer.close();
reader.close();


线程Thread
1.线程的两种方法(注:启动线程不是直接调用run()(这只是方法调用),而是相应的start())
继承Thread类,重写run()方法
使用方法:直接创建对象调用start()方法
常用方法:sleep(long millis);对象名.getName()/setName()


实现Runnable接口,实现run()方法(多个线程可共用一个对象)
使用方法:创建对象作为参数传递给Thread的构造器(多个线程可共用一个对象)
常用方法:Thread.sleep(long millis);Thread.currentThread().getName()/setName()


2.优先级
对象名.setPriority(10); //10优先  5普通   1





一些常用类的常用方法
1.DecimalFormat类中format()  规范数字(一般是double)的格式
使用方法:
DecimaFormat df = new DecimalFormat("###.##%");//小数点两位的百分格式
df.format(double d);


2.Random类中nextInt(int n)
使用方法:
Random r = new Random();
int number = r.nextInt(100);//[0,100)之间随机数


3.String类中split(String str)   用于分割字符串
String path = "http://www.softeem.com/****/list.html";
String[] strs = path.split("/");
注:以"."、"\"等做为分割符时,要注意转义(加两个反斜杠"\\")


4.String中replace(String str1,String str2) str1是要替换的子字符串,str2是用什么替换
String comment = "凤姐去了米国,找到了心仪男票,时不时在微博上抨击单身狗";
comment = comment.replace("凤姐","**");
comment = comment.replace("单身狗","***");


5.Calendar类中的方法
//获取日历对象
Calendar c = Calendar.getInstance();//Calendar是个抽象类(abtract)无法实例化
//获取年,月,日
System.out.println(c.get(Calendar.YEAR));    //当前年份
System.out.println(c.get(Calendar.MONTH)+1);//月份从0开始,当前月
System.out.println(c.get(Calendar.DAY_OF_MONTH));  //当前号
System.out.println(c.get(Calendar.HOUR));//12小时制     当前小时
System.out.println(c.get(Calendar.HOUR_OF_DAY));//24小时制
System.out.println(c.get(Calendar.MINUTE));//分钟
System.out.println(c.get(Calendar.SECOND));//秒钟
System.out.println(c.get(Calendar.MILLISECOND));//毫秒
System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH)); //获取当前日历表示的本周为本月的第几周
System.out.println(c.get(Calendar.DAY_OF_WEEK));//获取当前为本周第几天(默认周日为第一天)
//1.获取当前字段的最大值(当月的总天数)
System.out.println(c.getActualMaximum(Calendar.DAY_OF_MONTH));
//将日期设置为本月第一天
c.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(c.getTime());//当前日期时间同new Date().getTime();
//2.获取当月第一天是周几
int week = c.get(Calendar.DAY_OF_WEEK);
System.out.println(week);


6.SimpleDateFormat 它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化
//日期->文本(使日期格式化)
Date d = new Date();                   //
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
System.out.println(sdf.format(d));

//文本->日期


(待完善...)

原创粉丝点击