注册

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);
}
 }

0 个评论

要回复文章请先登录注册