我有一个超级初学者的问题。我今天有一个计算机科学考试,其中一个练习题是:
到目前为止,这是我的代码:
import java.util.*;
import java.io.*;
public class ReadFile
{
public static void main(String[] args) throws FileNotFoundException
{
PrintWriter out = new PrintWriter("hello.txt");
out.println("Hello, World");
File readFile = new File("hello.txt");
Scanner in = new Scanner(readFile);
ArrayList<String> x = new ArrayList<String>();
int y = 0;
while (in.hasNext())
{
x.add(in.next());
y++;
}
if (x.size() == 0)
{
System.out.println("Empty.");
}
else
{
System.out.println(x.get(y));
}
in.close();
out.close();
}
}
此代码有什么问题?
答案 0 :(得分:2)
1)您需要关闭流
2)你需要用(y-1)来引用x Arraylist,否则你会得到
一个java.lang.IndexOutOfBoundsException
。索引从0开始,而不是从1开始。
http://www.tutorialspoint.com/java/util/arraylist_get.htm
public static void main(String[] args) throws FileNotFoundException
{
PrintWriter out = new PrintWriter("hello.txt");
out.println("Hello, World");
out.close();
File readFile = new File("hello.txt");
Scanner in = new Scanner(readFile);
ArrayList<String> x = new ArrayList<String>();
int y = 0;
while (in.hasNext())
{
x.add(in.next());
y++;
}
in.close();
if (x.size() == 0)
{
System.out.println("Empty.");
}
else
{
System.out.println(x.get(y-1));
}
}
}
答案 1 :(得分:0)
我想代码的错误是你无法从文件中读取任何内容。
这是因为PrintWriter被缓冲了
fileName - 要用作此writer的目标的文件的名称。如果该文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将写入文件并缓冲。
在打开文件进行阅读之前,您需要关闭刚刚写入的文件,以便更改进入物理存储。因此,在out.close();
out.println("Hello, World");
答案 2 :(得分:0)
class FileWritingDemo {
public static void main(String [] args) {
char[] in = new char[13]; // to store input
int size = 0;
try {
File file = new File("MyFile.txt"); // just an object
FileWriter fw = new FileWriter(file); // create an actual file & a FileWriter obj
fw.write("Hello, World!"); // write characters to the file
fw.flush(); // flush before closing
fw.close(); // close file when done
FileReader fr = new FileReader(file); // create a FileReader object
size = fr.read(in); // read the whole file!
for(char c : in) // print the array
System.out.print(c);
fr.close(); // again, always close
} catch(IOException e) { }
}
}