public static void handleLogs(List<SmsSend> list) {
StringBuffer sb = new StringBuffer();
try {
RandomAccessFile rf = new RandomAccessFile(System.getProperty("user.dir")+ File.separatorChar + fileName + getTime() + ".txt","rw");
rf.seek(rf.length());//将指针移动到文件末尾
int size = list.size();
for(int i = 0; i < size; i++) {
sb.append(list.get(i).getMobile()+"|"+list.get(i).getAllContent().replaceAll("\\|", "")+"|"+list.get(i).getMark());
sb.append("\r\n");
}
rf.write(sb.toString().getBytes());
rf.close();//关闭文件流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} public static List<SmsSend> getLogs() throws IOException {
List<SmsSend> list = new LinkedList<SmsSend>();
renameFile("", "temp");
File f = new File(System.getProperty("user.dir")+ File.separatorChar + fileName + getTime() + "temp.txt");
if(f.exists()) {
FileReader fr = new FileReader(System.getProperty("user.dir")+ File.separatorChar + fileName + getTime() + "temp.txt");
BufferedReader br = new BufferedReader(fr);
String tempStr;
tempStr = br.readLine();
while (tempStr != null) {
SmsSend s = new SmsSend();
String[] temp = tempStr.split("\\|");
s.setMobile(temp[0]);
s.setAllContent(temp[1]);
s.setMark(Integer.parseInt(temp[2]));
list.add(s);
tempStr = br.readLine();
}
}
return list;
}
总共有两个线程在跑 一个在写文件,一个在读文件 ,但我觉得这样有问题 就是我在写文件的时候,读文件也开始了,这个时候是不能读文件的。这里的线程安全怎么控制
StringBuffer sb = new StringBuffer();
try {
RandomAccessFile rf = new RandomAccessFile(System.getProperty("user.dir")+ File.separatorChar + fileName + getTime() + ".txt","rw");
rf.seek(rf.length());//将指针移动到文件末尾
int size = list.size();
for(int i = 0; i < size; i++) {
sb.append(list.get(i).getMobile()+"|"+list.get(i).getAllContent().replaceAll("\\|", "")+"|"+list.get(i).getMark());
sb.append("\r\n");
}
rf.write(sb.toString().getBytes());
rf.close();//关闭文件流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} public static List<SmsSend> getLogs() throws IOException {
List<SmsSend> list = new LinkedList<SmsSend>();
renameFile("", "temp");
File f = new File(System.getProperty("user.dir")+ File.separatorChar + fileName + getTime() + "temp.txt");
if(f.exists()) {
FileReader fr = new FileReader(System.getProperty("user.dir")+ File.separatorChar + fileName + getTime() + "temp.txt");
BufferedReader br = new BufferedReader(fr);
String tempStr;
tempStr = br.readLine();
while (tempStr != null) {
SmsSend s = new SmsSend();
String[] temp = tempStr.split("\\|");
s.setMobile(temp[0]);
s.setAllContent(temp[1]);
s.setMark(Integer.parseInt(temp[2]));
list.add(s);
tempStr = br.readLine();
}
}
return list;
}
总共有两个线程在跑 一个在写文件,一个在读文件 ,但我觉得这样有问题 就是我在写文件的时候,读文件也开始了,这个时候是不能读文件的。这里的线程安全怎么控制
* 当有一线程持有写锁时,其他线程不能获得读锁
* 读锁可以被任意多的线程所持有