Android 开发小总结
1、Java 用FileReader 和 FileWriter 进行文件读写
FileReader 和FileWriter是对文件进行读取和写入的;
具体流程:
//文件路径
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"bz_Contact"+File.separator+"bz_contact.txt";
FileWriter.java
//根据给定的 File 对象构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
FileWriter writer = new FileWriter(file,true);
//写入类
BufferWriter bw = new BufferWriter(writer);
//写入方法
bw.writer("XXXXXXXXXXXXXXXXX");
//清空管道
bw.flush();
//关闭管道
bw.close();
读取 FileReader.java
//创建 读取器
FileReader fr= new FileReader(file);
//字符串结果
StringBuffer sb = new StringBuffer();
//读取工具
BufferReader reader = new BufferReader(fr);
//按行读取
String line = reader.readerLine();
//遍历读取
while(line != null){
//追加
sb.appen(line);
//读取
line = reader.readerLine();
}
//清空管道
reader.flush();
//关闭管道
reader.close();
//或者使用
BufferedReader buffer = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
String str = buffer.readLine();
System.out.println(str);
buffer.close();
如果要清空文件夹中所有数据
/**
* 清除之前的所有数据
*/
FileWriter writer = new FileWriter(file);
writer.write("");
writer.flush();
writer.close();
//判断此文件是否还有数据
FileInputStream inputStream = new FileInputStream(file);
//根据这个size来判断,如果是0,表示没有数据
int size = inputStream.available();
Log.e("清除缓存","清除缓存"+size);
这个是判断文件里面是否有数据,如有数据就先清除,之后在新增
public void saveHtml(String html){
try {
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
String tag = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"news.html";
File file = new File(tag);
if(!file.exists()){
file.createNewFile();
}
FileInputStream inputStream = new FileInputStream(file);
if(inputStream.available()>0){
FileWriter writer = new FileWriter(file); BufferedWriter bufferedWriter = new BufferedWriter(writer);
bufferedWriter.write("");
bufferedWriter.flush();
bufferedWriter.close();
writer.close();
writer = null;
}
FileOutputStream outputStream = new FileOutputStream(file);
FileWriter writer = new FileWriter(file);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
bufferedWriter.write(html);
bufferedWriter.flush();
bufferedWriter.close();
writer.close();
writer = null;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
2、获取手机屏幕的几种方法
1、
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
2、
WindowManager wm = this.getWindowManager();
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
3、
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
intscreenWidth = dm.widthPixels;
intscreenHeight = dm.heightPixels;
3、LinkedHashMap与Map的区别以及遍历MAP的几种中方式
public class LinkedHashMap<K,V>extends HashMap<K,V>implements Map<K,V>
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。)
遍历Map的四种方法
public static void main(String[] args) {
Map map = new HashMap();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}