简体   繁体   English

从实现中读取文本文件

[英]Reading a text file from implementation

I am trying to create an implementation that reads a file that the user has typed and submitted.我正在尝试创建一个实现来读取用户输入并提交的文件。 The code for that is located in the SetTester class (shown below).该代码位于 SetTester 类中(如下所示)。 In my implementation I already have an array declared called String[] myArray = new String [] {};在我的实现中,我已经声明了一个名为String[] myArray = new String [] {};的数组String[] myArray = new String [] {}; to hold the data from the file.保存文件中的数据。 How would I be able to take the file that is being called in the tester class and put it into that array?我如何能够获取在测试器类中调用的文件并将其放入该数组中?

    public class SetTester
{
    public static void main(String [] args) {
        StringSet words = new MyStringSet();
        Scanner file = null;
        FileInputStream fs = null;
        String input;
        Scanner kb = new Scanner(System.in);
        int wordCt = 0;
        
        boolean ok = false;
        
        while (!ok)
        {
            System.out.print("Enter name of input file: ");
            input = kb.nextLine();
            try
            {
                fs = new FileInputStream(input);
                ok = true;
            }
            catch (FileNotFoundException e)
            {
                System.out.println(input + " is not a valid file.  Try again.");
            }
        }
        
        file = new Scanner(fs);
        while (file.hasNext())
        {
            input = file.next();
            words.insert(input);
            System.out.println("Current capacity: " + words.getCapacity());  
            wordCt++;
        }
        
        System.out.println("There were " + wordCt + " words in the file");
        System.out.println("There are " + words.inventory() + " elements in the set");
        System.out.println("Enter a value to remove from the set: ");
        input = kb.nextLine();
        while (!words.contains(input))
        {
            System.out.println(input + " is not in the set");
            System.out.println("Enter a value to remove from the set: ");
            input = kb.nextLine();
        }
        
        words.remove(input);
        System.out.println("There are now " + words.inventory() + " elements in the set");
        System.out.println("The first 10 words in the set are: ");
        for (int x=0; x<10; x++)
            System.out.println(words.getFirstItem());
        System.out.println("There are now " + words.inventory() + " elements in the set");
        System.out.println("5 random words from the set are: ");
        for (int x=0; x<5; x++)
            System.out.println(words.getRandomItem());
        System.out.println("There are now " + words.inventory() + " elements in the set");
    }
}

For reading from a file I use this class:为了从文件中读取我使用这个类:

import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;

public class ReadFile {
    private static String path;
    
    public ReadFile(String file_path){
        path = file_path;
    }
    public String[] OpenFile() throws IOException {
        FileReader fr = new FileReader(path);
        BufferedReader textReader = new BufferedReader(fr);
        
        int numberOfLines = readLines();
        String[] textData = new String[numberOfLines];
        
        for (int j = 0; j < numberOfLines; j++) {
            textData[j] = textReader.readLine();
        }
        
        textReader.close();
        return textData;
    }
    static int readLines() throws IOException {
        FileReader file_to_read = new FileReader(path);
        BufferedReader bf = new BufferedReader(file_to_read);
        
        String aLine;
        int numberOfLines = 0;
        
        while((aLine = bf.readLine()) != null){
            numberOfLines++;
        }
        bf.close();
        return numberOfLines;
    }
}

then in the class main you can add this code and you edit the path so you can read a file an get an array out of it然后在类 main 中,您可以添加此代码并编辑路径,以便您可以读取文件并从中获取数组

public static void main(String args[]) throws IOException {
    ReadFile r = new ReadFile("here you put the path that the user provide");
    String[] text = r.OpenFile();
    ArrayList<String> array = new ArrayList<>();
    array.addAll(Arrays.asList(text));
}

If you have any questions let me know!如果您有任何问题,请告诉我!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM