当前位置: 代码迷 >> J2SE >> 自己写的记事本程序,“打开”功能出现了有关问题
  详细解决方案

自己写的记事本程序,“打开”功能出现了有关问题

热度:68   发布时间:2016-04-23 19:52:33.0
自己写的记事本程序,“打开”功能出现了问题
打开某些特定位置的文件时程序会发生异常,并且不能通过程序右上角的‘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一直是有内容的,所以就死循环了。
------解决思路----------------------
的确如楼上所说,死循环了
  相关解决方案