简体   繁体   中英

Reading data from a file in Java

So I have a background in c++ and I am trying to learn java. Everything is pretty similar. I am having a problem thought with file i/o. So I am messing around and doing really simple programs to get the basic ideas. Here is my code to read data from a file. So I am reading Core Java Volume 1 by Cay Hortsman and it tells me to write this to read from a file,

Scanner in = new Scanner(Paths.get("myFile.txt");

But when I write it in my code, it gives me a red line under paths. So I am not sure how to read from a file. It does not go into much detail about the subject. So my program below I am trying to just read numbers in from a file and store them in an array.

 package practice.with.arrays.and.io;

 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.*;

 public class PracticeWithArraysAndIO 
 {

     static final int TEN = 10;

 public static void main(String[] args) throws IOException
 {
      //Declaring a scanner object to read in data
      Scanner in = new Scanner(Paths.get("myFile.txt"));

      //Declaring an array to store the data from the file
      int[] arrayOfInts = new int[TEN];

      //Local variable to store data in from the file
      int data = 0;

      try
      {
      for(int i = 0; i < TEN; i++)
      {
          data = in.nextInt();
          arrayOfInts[i] = data;
      }
      }
      finally
      {
       in.close();
      }
  }

It is not clear why you are doing Paths.get(filename)) .

You can wrap a Scanner around a file like this. As the comments below mention, you should choose an appropriate charset for your file.

  Scanner in = new Scanner(new File("myFile.txt"), StandardCharsets.UTF_8);

To use the constant above, you need the following import, and Java 7.

import java.nio.charset.StandardCharsets

With my experience in Java, I've used the BufferedReader class for reading a text file instead of the Scanner. I usually reserve the Scanner class for user input in a terminal. Perhaps you could try this method out.

Create a BufferedReader with FileReader like so:

BufferedReader buffReader = new BufferedReader(new FileReader("myFile.txt"));

After setting this up, you can read lines with:

stringName = buffReader.readLine();

This example will set the String, stringName, to the first line in your document. To continue reading more lines, you'll need to create a loop.

I've used the BufferedReader class. I hope it is helpful for you

public class PracticeWithArraysAndIO {

static final int TEN = 10;

public static void main(String[] args) throws IOException
{
    BufferedReader br = null;
    try{


        br = new BufferedReader(new FileReader("/home/myFile.txt"));//input your file path

        int value=0;

        int[] arrayOfInts = new int[TEN];

        int i=0;

        while((value = br.read()) != -1) 
        { 
            if(i == 10)  //if out of index, break
                break;

            char c = (char)value; //convert value to char
            int number = Character.getNumericValue(c); //convert char to int

            arrayOfInts[i] = number; //insert number into array

            i++;
        }

    }catch(IOException e){
        e.printStackTrace();
    }finally{
        if(br != null)
            br.close(); //buffer close
    }

}
}

您需要导入java.nio.file.Paths

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