打开某些特定位置的文件时程序会发生异常,并且不能通过程序右上角的‘x’来关闭程序,只能通过任务管理器来关闭,并且查看任务管理器会发现此时记事本程序占用的内存资源和cpu资源特别大。并且此时的菜单栏也不能用了。请帮助我,不胜感激。
代码如下,并且“textareausedinallclass”这个对象中只含有textarea这么一个变量,这个变量用来设置记事本程序中的文本框,“textareaIsEmpty”这个方法用来判断文本框里面有没有内容:
private void openFile()
{
if(textareaIsEmpty()==false)
{
saveFile();
commonContentInOpenFile();
}
else
{
commonContentInOpenFile();
}
}
private void commonContentInOpenFile()
{
FileDialog filedialog_open=new FileDialog(this);
filedialog_open.setVisible(true);
filename=filedialog_open.getDirectory()+filedialog_open.getFile();
File filetoload=new File(filename);
try {
FileReader reader = new FileReader(filetoload);
BufferedReader bufferedreader=new BufferedReader(reader);
textareausedinallclass.textarea.setText("");
String readline=bufferedreader.readLine();
while(readline!=null)
{
textareausedinallclass.textarea.append(readline);
}
bufferedreader.close();
reader.close();
}
catch (FileNotFoundException e1)
{
JOptionPane.showMessageDialog(null,"文件不存在");
}
catch (IOException e)
{
e.printStackTrace();
}
}
------解决思路----------------------
呃,打完没运行试一下,结果没发现菜单里出现了两个保存
------解决思路----------------------
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ReadFile{
public static void main (String[] args) {
String fname = "test.txt";
File f = new File(fname);
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
while ( s != null ) {
System.out.println("读入: " + s);
s = br.readLine();
}
br.close();
} catch (FileNotFoundException e1) {
System.err.println("File not found: " + fname);
} catch (IOException e2) {
e2.printStackTrace();
}
}
}
------解决思路----------------------
String readline=bufferedreader.readLine();
while(readline!=null)
{
textareausedinallclass.textarea.append(readline);
}
这段代码改成这样
String readline=bufferedreader.readLine();
while(readline!=null)
{
textareausedinallclass.textarea.append(readline);
readline=bufferedreader.readLine();
}
你appen后,没有重新读取,那个变量readline一直是有内容的,所以就死循环了。
------解决思路----------------------
的确如楼上所说,死循环了