Java输入流

Java输入流,java,stream,Java,Stream,我正试图通过以下程序代码打开一个文件 public void actionPerformed(ActionEvent e) { else if(e.getSource() == menyFlikTre) { läsInFil(textFalt.getText()); } private void läsInFil(String filename) { try { FileReader r = new FileReader

我正试图通过以下程序代码打开一个文件

public void actionPerformed(ActionEvent e)
{
    else if(e.getSource() == menyFlikTre)
    {
        läsInFil(textFalt.getText());
    }    


private void läsInFil(String filename)
{
    try {
        FileReader r = new FileReader(filename);
        textArea.read(r, null);
    }
    catch(IOException e){}
}

当我输入扩展名为.txt的文件名时,它只添加文件的整个名称,包括扩展名为.txt的文件,而不是文件的内容。

您应该循环浏览文件的内容,并将其添加到文本区域:

FileReader fr = new FileReader(filename); 
BufferedReader br = new BufferedReader(fr); 
String s; 
while((s = br.readLine()) != null) { 
// write to textArea
} 

恐怕你给我们看的代码根本不可能做到这一点。请确保您正在运行的代码与您正在查看的代码相同-您可能与多个版本的内容混淆,或者在未编译代码的情况下修改代码,等等。此外,切勿使用空的catch块,如那样-始终至少在exception对象上包含对printStackTrace的调用,所以你知道如果出了什么问题,在läsInFil中有那个特殊的ä字符可以吗?我以前从未见过,所以我想我应该指出这一点。我只是浏览了代码的其余部分,这是不相关的…@kentcdoff,Java允许在其标识符名称中使用任何Unicode字符。在方法和变量名中,它工作得很好。类名有时可能会导致问题,不是因为Java,而是因为文件系统。@JohnnyHankgard,您可以在try-catch语句中添加任何需要的内容。我的意思是,它是允许的,并且会编译:@JohnnyHankgard-Use String contentString=new String buf;抱歉,我没有声明变量。请这样做:,edsited回答我认为这应该可以。在catch中执行一些操作,尝试查找是否发生任何异常!。我已经添加了stacktrace。
private void läsInFil(String filename)
{
    try {
        File file = new File(filename);   
        FileReader r = new FileReader(filename);
        char[] buf = new char[(int)file.length()];
        r.read(buf);
        String contentString = new String(buf);
        textArea.append(contentString);
    }
    catch(IOException e){
e.printStacktrace();
}
    }