我该如何使用这种方法? (该方法采用文本文件并将其转换为字符串)

时间:2015-12-06 23:53:08

标签: java

我目前正在上高中Java课程。我在Stack Overflow上进行了大量的研究,试图完成我目前分配的项目。该项目包括修改和搜索从百科全书文件中提取的各种单词。这就是我遇到的问题,这个项目的基本形式。我已经找到了解决这个问题的方法,但我无法找到实现它的好方法。这是我在这里找到的代码的副本:(第三种方法包含我从该网站获取的部分)

class word
{
    public String newString;
    EasyReader fileIn = new EasyReader("Encyclopedia.txt");
    EasyWriter fileOut = new EasyWriter("writeHere.txt");
    String fileName="Encyclopedia.txt";
    private String onFile;

    public word()
    {
        onFile="";
    }

    public word(String s)
    {
        onFile=s;
    }

    String file = "Encyclopedia.txt";
    private String readFile(String file) throws IOException
    {
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line=null;
        StringBuilder stringBuilder = new StringBuilder();
        String is=System.getProperty("line.seperator");

        while((line=reader.readLine())!=null)
        {
            stringBuilder.append(line);
            stringBuilder.append(is);
        }

        newString=stringBuilder.toString();
        return stringBuilder.toString();
    }
}

所以,问题是:我如何使用这种方法?我知道这听起来很愚蠢,但是如何运行此方法然后再使用数据?它应该采用给定的文本文件并返回一个字符串,但我甚至不确定如何在处理后获得返回值。

非常感谢任何帮助。我在这里开了个账户只是为了问这个问题。如果我需要在其他地方发布,或者如果有更好的网站用于查找答案和一些更基本的帮助,请告诉我。谢谢, -Ethan

3 个答案:

答案 0 :(得分:0)

试试这个:

 String file ="/path/to/file.csv"
 word myWord  = new word();
 o = myWord.getClass().getDeclaredMethod("readFile");
 o.setAccessible(true);
 Object r = o.invoke(myWord);
    //print result  

答案 1 :(得分:0)

从文件读取字符串的实际方法是:" readFile"。而在你的课堂上,你并没有这样称呼。

private String readFile(String file) throws IOException

您可以将文件名作为参数传递,它将返回读取字符串。

那么,如何修改你的单词(String s),并添加将返回读取文件的实际结果的方法?

public word(String s)
{
    onFile=s;
    newString = readfile(onFile);
}

public getNewString(){
    return newString;
}

答案 2 :(得分:0)

readFile方法似乎一次做多件事。它接受一个file参数,该参数覆盖具有相同名称的成员变量。然后它将文件读入String并将newString成员变量设置为结果,然后返回相同的结果。

所以我建议首先确定方法是应该返回数据还是设置成员变量。如果多个方法将使用结果,则使用成员变量可能很有用,否则返回返回路径。此外,您可以删除file成员变量,因为该方法会忽略它。

您可以将方法重写为这样(我刚删除了newString=stringBuilder.toString();行,并将其更改为静态,因为它可以):

private static String readFile(String file) throws IOException
{
    BufferedReader reader = new BufferedReader(new FileReader(file));
    String line=null;
    StringBuilder stringBuilder = new StringBuilder();
    String is=System.getProperty("line.seperator");

    while((line=reader.readLine())!=null)
    {
        stringBuilder.append(line);
        stringBuilder.append(is);
    }

    return stringBuilder.toString();
}

无论你需要使用它,都要这样调用它(记得抓住IOException):

try {
    String someString = readFile("filename.txt");
} catch(IOException e) {
    // handle error
}

请记住,除非您将private更改为public,否则必须从同一个班级内调用。

此外,可能值得阅读并遵循标准code style。例如,它可以通过区分不同类型的变量来提供帮助。