java中一些知识点

java中一些知识点

注:

 Java Platform SE 8

 [Android API](file:///C:/Users/silen/AppData/Local/Android/sdk/docs/guide/index.html)

1.对象输入输出流

2.涉及到流对象一定注意异常处理(捕捉并抛出异常),否则报错。两种方式:

  方式一:try...catch;

  方式二:throw FileNotFoundException/IOException/ClassNotFoundException;

     若含有多种异常,可以采用throw Exception;

例:

//方式二
public Object InputObject() throws Exception{
	Object feature = new Object();
	File file = new File("sdcard/detectmoney/database", "data.txt");
	//文件输出流
	FileInputStream fin = new FileInputStream(file);
	//对象输出流
	ObjectInputStream obin = new ObjectInputStream(fin);
	//保存对象到文件
	feature = obin.readObject();
	obin.close();

	return feature;
}


//方式一
public Object InputObject(){
	Object feature = new Object();
	File file = new File("sdcard/detectmoney/database", "data.txt");
	try{
		//文件输出流
		FileInputStream fin = new FileInputStream(file);
		//对象输出流
		ObjectInputStream obin = new ObjectInputStream(fin);
		//保存对象到文件
		feature = obin.readObject();
		obin.close();
	}catch(FileNotFoundException e){
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	}

	return feature;
}

3.读取保存在文件中对象:

 (1) readObject()位于Java.io.ObjectInputStream。声明为:

public final Object readObject();

  由此可看出返回值为Object类型。

 (2)为了提取存储的信息,需要读取得到Object对象后转化为存储前的对象类型。

//强制转化
Feature feature = (Feature) new OutputFeature().InputObject();

错误:

Feature[] feature = (Feature[]) object;//Object[] object是存储feature对象的数组

错因:Java.lang.ClassCastException,即类转化错误,无法由Object[]转化到Feature[]

解决方法:单个转化

Feature feature = (Feature) object[0];
//若要进行整个数组转化可利用循环逐个元素对应转化

 (3)如果A程序需要读取B程序中生成的对象输出流文件时必须导入B程序中相应的类,不可重新定义类。导入相应类时注意其包名不可变,即带包导入。如果改变包名就变成了新建类,与原先类是有差别的,无法读取对象(因为对象存储时是包含相应类信息的)。

4.数组输出方法:

Arrays.toString(数组)
Arrays.deepToString()

5.String转化为char[]:

str.toCharArray();

6.提示框设置:

Toast.makeText(context, str, time).show();
//context:当前的上下文环境。可用getApplicationContext()或this
//str:要显示的字符串。可以时自定义字符串,也可是R.string中字符串ID
//time:显示的时间长短。Toast默认的有两个LENGTH_LONG(长,3500ms)和LENGTH_SHORT(短,2000ms),也可以使用毫秒如2000ms

7.输出程序执行时间(time)

long start=System.currentTimeMillis();
long time = System.currentTimeMillis() - start;
//Log.v/d/i/w/e属于在控制台输出
//若要在手机界面输出可用TextView或EditText或者Toast

8.判断文件存在与否

 (1)每次执行File f =new File(文件目录); 时,如果文件不存在,则都会自动创建文件;若存在则不会创建。

 (2)对比(1)执行File f =new File(目录);时,如果目录不存在则不会创建目录。

 (3)输出流语句FileOutputStream fout = new FileOutputStream(file); 会创建新空白文件,故如果要读取原来文件中信息,必须放在该句之前,否则会覆盖原来的文件,导致原来的文件信息缺失。

 (4)对比(3):FileInputStream fin = new FileInputStream(file);则不会创建新文件

 故判断某文件或目录是否存在,不存在则创建用以下写法:

//文件:
if(!new File(文件目录).exists()) f = new File(文件目录);  //因为匿名对象并不实例化

//目录:
File f =new File(目录);
if(!f.exists()) f.mkdirs();   //注意用mkdirs(),尽量不用mkdir()。因为前者可创建多级目录

posted on 2016-05-12 16:29  silentteen  阅读(174)  评论(0编辑  收藏  举报