java - 在 Java 中打印外部文件中的文本

标签 java

我正在尝试创建一个外部文件,其中包含一行文本,然后在 Java 程序中打印该行文本。我努力了;但是,我遇到了麻烦。我的代码没有抛出任何错误,它只是无法正常工作。

import java.io.*;
import java.util.*;

public class App {

public static void main(String[] args) {

    String terminate = "X";
    String Question = "";
    System.out.println("I am the all-knowing Magic 8 Ball!");

    do {
        Scanner scnr = new Scanner(System.in);
        System.out.println("");
        System.out.println("Ask your question here or enter 'X' to exit:");
        Question = scnr.nextLine();
        continueGame(Question); 
    } while (terminate != Question);


        String testData[] = {"test1", "test2", "test3"};
        writeFile(testData, "data.txt");
        ArrayList<String> fileContents = readFile("data.txt");

        if (terminate.equalsIgnoreCase(Question)) {
        for (String contents : fileContents) {
            System.out.println(contents);
        }        
    }
   }

public static void continueGame(String Question) {

    char terminate = 'X';
    char condition = Question.charAt(0);

    if (condition == terminate) 
    {
        System.out.println("");
        System.out.println("Thanks for playing!");
        System.exit(0);
    }
    try 
    {
        Random rand = new Random();
        int choice;
        choice = 1 + rand.nextInt(20);
        responseOptions(choice, Question);
    }
    catch (Exception e)
    {
        System.out.println("Error: Invalid");
    }
}

public static void responseOptions(int choice, String answer)
{
    switch (choice)
    {
        case 1: answer = "Response: It is certain"; break;
        case 2: answer = "Response: It is decidely so"; break;
        case 3: answer = "Response: Without a doubt"; break;
        case 4: answer = "Response: Yes, definitely"; break;
        case 5: answer = "Response: You may rely on it"; break;
        case 6: answer = "Response: As I see it, yes"; break;
        case 7: answer = "Response: Most likely"; break;
        case 8: answer = "Response: Outlook good"; break;
        case 9: answer = "Response: Yes"; break;
        case 10: answer = "Response: Signs point to yes"; break;
        case 11: answer = "Response: Reply hazy, try again"; break;
        case 12: answer = "Response: Ask again later"; break;
        case 13: answer = "Response: Better not tell you now"; break;
        case 14: answer = "Response: Cannot predict now"; break;
        case 15: answer = "Response: Concentrate and ask again"; break;
        case 16: answer = "Response: Don't count on it"; break;
        case 17: answer = "Response: My reply is no"; break;
        case 18: answer = "Response: My sources say no"; break;
        case 19: answer = "Response: Outlook not so good"; break;
        case 20: answer = "Response: Very doubtful"; break;
    }
    System.out.println("");
    System.out.println(answer);
}

public static void writeFile(String arrayToWrite[], String filename) {

    try {
        PrintWriter wordWriter = new PrintWriter("filename.txt");
        for (String words : arrayToWrite) {
            wordWriter.println(words + "\n");
        }
    } catch (Exception e) {
        String msg = e.getMessage();
        System.out.print(msg);
    }   
}

public static ArrayList<String> readFile(String filename) {
    ArrayList<String> fileContents = new ArrayList();
    File myFile = new File(filename);

    try {
        Scanner scnr = new Scanner(myFile);
        String tempStr = "";
        while (scnr.hasNextLine()) {
            tempStr = scnr.nextLine();
            fileContents.add(tempStr);
        }
    } catch (Exception e) {
        String msg = e.getMessage();
        System.out.println(msg);
    }
    return fileContents;
}  
}

最佳答案

您的代码的问题是,虽然您在 writeFile() 中获取了 filename 但您没有制作名称为 filename 的文件您正在使用filename.txt创建一个文件。在 readFile() 中,您正在读取尚未创建的文件 filename,但 new file(filename) 将创建一个空文件是文件不存在。现在您正在读取一个空文件。将以下代码放入您的 writeFile(),

try{  
     FileWriter fw=new FileWriter(filename);  
     for (String words : arrayToWrite) {
        fw.write(words + "\n");
     } 
     fw.close(); 

   }catch(Exception e){
     System.out.println(e);
} 

For extra note try not using PrintWriter or PrintStreamWriter as they don't through error which will cause you problem.

关于java - 在 Java 中打印外部文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703486/

相关文章:

java - Java 中以微秒为单位的解析时间

java - Java中从字符串中提取实数

java - 创建所有可能的元素组合

Java 允许在枚举类型中声明抽象方法,但它是最终类而不是抽象类

java - 我们应该向 userFriendlySelector 函数传递哪些参数才能获取流信息

java - 如何用正则表达式截取URL

java - RestEasy 客户端所需的 jar

java - 很难使用 hibernate JPA 注释设置自动生成的时间

java - 如何将 native 库和 JNI 库捆绑到 JAR 中?

java - 当 Actor 调整大小时是否有监听器?