Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何使用这个方法?(该方法获取文本文件并将其转换为字符串)_Java - Fatal编程技术网

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

Java 我如何使用这个方法?(该方法获取文本文件并将其转换为字符串),java,Java,我目前正在上高中水平的Java课程。我在这里做了大量关于堆栈溢出的研究,试图完成我目前分配的一个项目。该项目包括对从百科全书文件中提取的各种单词进行修改和搜索。这就是我遇到的问题,这个项目的基本形式。我已经找到了解决这个问题的方法,但是我没有找到一个好的方法来实现它。这是我在这里找到的代码的副本:(下面的第三个方法包含我从这个站点获取的部分) 那么,问题是:我如何使用这种方法?我知道这听起来很傻,但是如何运行这个方法,然后在以后使用数据呢?它应该获取一个给定的文本文件并返回一个字符串,但我甚至不

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

那么,问题是:我如何使用这种方法?我知道这听起来很傻,但是如何运行这个方法,然后在以后使用数据呢?它应该获取一个给定的文本文件并返回一个字符串,但我甚至不知道在它处理后如何获取返回值

任何帮助都将不胜感激。我在这里做了一个说明,就是想问这个问题。如果我需要将此发布到其他地方,或者如果有更好的网站可用于查找答案和一些更基本的帮助,请让我知道。谢谢 -Ethan试试这个:

 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
}