我目前正在上高中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
答案 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。例如,它可以通过区分不同类型的变量来提供帮助。