简体   繁体   中英

easiest way to read a java file - is there a simpler auternative to JSON

I am writing a small java method that needs to read test data from a file on my win10 laptop.

The test data has not been formed yet but it will be text based.

I need to write a method that reads the data and analyses it character by character.

My questions are:

what is the simplest format to create and read the file....I was looking at JSON, something that does not look particularly complex but is it the best for a very simple application?

My second question (and I am a novice). If the file is in a text file on my laptop.....how do I tell my java code where to find it....how do I ask java to navigate the win10 operating system?

As for the format the text file needs to take, you should elaborate a bit on the kind of data. So I can't say much there.

But to navigate the file system, you just need to write the path a bit different:

  • The drive letter is a single character at the beginning of the path ie no colon ":"
  • replace the backslash with a slash

then you should be set.

So for example...

C:\users\johndoe\documents\projectfiles\mydatafile.txt 

becomes

 c/users/johndoe/documents/projectfiles/mydatafile.txt

With this path, you can use all the IO classes for file manipulation.

Regarding your first question, I can't say much, without knowing anything about the data you like to write/read.

For your second question, you would normally do something like this:

String pathToFile = "C:/Users/SomeUser/Documents/testdata.txt";
InputStream in = new FileInputStream(pathToFile);

As your data gains more complexity you should probably think about using a defined format, if that is possible, something like JSON, YAML or similar for example.

Hope this helps a bit. Good luck with your project.

You can also map the text file into java objects (It depends on your text file).

For example, we have a text file that contains person name and family line by line like:

Foo,bar
John,doe

So for parse above text file and map it into a java object we can :

1- Create a Person Object

2- Read and parse the file (line by line)

Create Person Class

public class Person {

    private String name;
    private String family;

    //setters and getters
}

Read The File and Parse line by line

public static void main(String[] args) throws IOException {

        //Read file
        //Parse line by line
        //Map into person object
        List<Person> personList = Files
                .lines(Paths
                        .get("D:\\Project\\Code\\src\\main\\resources\\person.txt"))
                .map(line -> {

                            //Get lines of test and split by ","
                            //It split words of the line and push them into  an array of string. Like "John,Doe" -> [John,Doe]
                            List<String> nameAndFamily = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(line);

                            //Create a new Person and get above words
                            Person person = new Person();
                            person.setName(nameAndFamily.get(0));
                            person.setFamily(nameAndFamily.get(1));
                            return person;
                        }
                ).collect(Collectors.toList());



        //Process the person list
        personList.forEach(person -> {
            //You can whatever you want to the each person 
            //Print
            System.out.println(person.getName());
            System.out.println(person.getFamily());
        });


    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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