Java 我如何使用这个方法?(该方法获取文本文件并将其转换为字符串)
我目前正在上高中水平的Java课程。我在这里做了大量关于堆栈溢出的研究,试图完成我目前分配的一个项目。该项目包括对从百科全书文件中提取的各种单词进行修改和搜索。这就是我遇到的问题,这个项目的基本形式。我已经找到了解决这个问题的方法,但是我没有找到一个好的方法来实现它。这是我在这里找到的代码的副本:(下面的第三个方法包含我从这个站点获取的部分) 那么,问题是:我如何使用这种方法?我知道这听起来很傻,但是如何运行这个方法,然后在以后使用数据呢?它应该获取一个给定的文本文件并返回一个字符串,但我甚至不知道在它处理后如何获取返回值 任何帮助都将不胜感激。我在这里做了一个说明,就是想问这个问题。如果我需要将此发布到其他地方,或者如果有更好的网站可用于查找答案和一些更基本的帮助,请让我知道。谢谢 -Ethan试试这个:Java 我如何使用这个方法?(该方法获取文本文件并将其转换为字符串),java,Java,我目前正在上高中水平的Java课程。我在这里做了大量关于堆栈溢出的研究,试图完成我目前分配的一个项目。该项目包括对从百科全书文件中提取的各种单词进行修改和搜索。这就是我遇到的问题,这个项目的基本形式。我已经找到了解决这个问题的方法,但是我没有找到一个好的方法来实现它。这是我在这里找到的代码的副本:(下面的第三个方法包含我从这个站点获取的部分) 那么,问题是:我如何使用这种方法?我知道这听起来很傻,但是如何运行这个方法,然后在以后使用数据呢?它应该获取一个给定的文本文件并返回一个字符串,但我甚至不
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
从文件中读取字符串的实际方法是:“readFile”。在你的课堂上,你不是这么叫的
private String readFile(String file) throws IOException
您可以将文件名作为参数传递,它将返回读取字符串
那个么,修改您的单词(字符串s)并添加将返回读取文件的实际结果的方法怎么样
public word(String s)
{
onFile=s;
newString = readfile(onFile);
}
public getNewString(){
return newString;
}
readFile
方法似乎同时做了多项工作。它接受一个文件
参数,该参数覆盖具有相同名称的成员变量。然后它将文件读入一个字符串,并在返回相同的结果之前将newString
成员变量设置为结果
因此,我建议首先决定该方法是返回数据还是设置成员变量。如果有多个方法将要使用结果,那么使用成员变量可能会很有用,否则使用返回路径。此外,您可能还可以删除文件
成员变量,因为该方法会忽略它
您可以将该方法重写为如下所示(我刚刚删除了newString=stringBuilder.toString();
行,并将其更改为static,因为它可以:
无论您需要在哪里使用它,都可以这样调用它(记住捕获IOException):
请记住,除非将private
更改为public
,否则必须从同一类内部调用它
此外,它可能值得阅读并遵循一个标准。例如,通过区分不同类型的变量,它确实很有帮助。鉴于它是
私有的
,您必须从构造函数调用它,可能是word(String)
如何调用此方法?通常,我习惯于做像class.methodName(arg)这样的事情,但我并没有真正传递参数或数据,我只是想让它生成字符串。。。我是java新手,如果我说了一些愚蠢的话,请原谅。因为这个方法返回一个结果,所以您可以像函数一样调用:String myString=readFile(“myFileName”)代码>在构造函数中,类似于字符串数据=读取文件代码>。当从类的同一实例中调用实例方法时,不需要提供类/对象名称。谢谢大家的帮助。我想我在另一个主题上看到了类似的内容,只是看错了。readFile
是私有的,不能从类的实例外部调用,它是在可怜的OP中定义的。我不知道如何从它定义的类内部调用方法,你把反射推到它们身上!?这是一个非常糟糕的主意(IMHO)同意,但最好有多种方式来做OP想做的事情,他可以选择一种他觉得舒服的方式。如果反射一般不被阻止,但完全绕过访问控制完全是一种黑客行为,我可能会同意。如StanleyKou所提供的,将OP引导至更合适的解决方案,或建议将方法保护
或公开
将是更好的解决方案。这只是一个完全肮脏的黑客行为,应该尽可能避免。我尝试了一下,收到了错误:未报告的异常IOException;必须捕获newString=readFile(onFile);你能帮我确定一下我要添加try/catch的位置吗?再说一次,我对这类事情还很陌生。在解释中全力以赴将是非常值得的添加try/catch for catch IOException。让我显示您的错误消息。似乎文件路径是错误的,所以您需要将“Encyclopedia.txt”放置到正确的路径。
public word(String s)
{
onFile=s;
newString = readfile(onFile);
}
public getNewString(){
return newString;
}
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();
}
try {
String someString = readFile("filename.txt");
} catch(IOException e) {
// handle error
}