所以我有c ++的背景,我正在努力学习java。一切都非常相似。我有文件i / o的问题。因此,我正在搞乱并做一些非常简单的程序来获得基本的想法。这是我从文件中读取数据的代码。所以我正在阅读Cay Hortsman撰写的Core Java Volume 1,它告诉我写这个来读取文件,
Scanner in = new Scanner(Paths.get("myFile.txt");
但是当我在我的代码中写它时,它在路径下给了我一条红线。所以我不确定如何从文件中读取。它没有详细介绍这个主题。所以下面我的程序我试图从文件中读取数字并将它们存储在一个数组中。
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();
}
}
答案 0 :(得分:1)
目前尚不清楚为什么要Paths.get(filename))
。
您可以将Scanner
包裹在这样的文件周围。如下面的评论所述,您应为您的文件选择合适的charset
。
Scanner in = new Scanner(new File("myFile.txt"), StandardCharsets.UTF_8);
要使用上面的常量,需要以下导入和Java 7。
import java.nio.charset.StandardCharsets
答案 1 :(得分:1)
凭借我在Java方面的经验,我使用BufferedReader类来读取文本文件而不是Scanner。我通常在终端中为用户输入保留Scanner类。也许你可以尝试这种方法。
使用FileReader创建一个BufferedReader,如下所示:
BufferedReader buffReader = new BufferedReader(new FileReader("myFile.txt"));
设置完成后,您可以阅读以下行:
stringName = buffReader.readLine();
此示例将String,stringName设置为文档中的第一行。要继续阅读更多行,您需要创建一个循环。
答案 2 :(得分:0)
我使用过BufferedReader类。 我希望它对你有所帮助
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
}
}
}
答案 3 :(得分:0)
您需要导入java.nio.file.Paths
。