我想从文本文件中恢复以下数据。问题是我只能恢复一个字符串/行,我无法恢复其余的数据。
以下是代码:
public static String restore(String filename) throws IOException, ClassNotFoundException
{
FileInputStream fn = new FileInputStream(filename);
ObjectInputStream ob = new ObjectInputStream(fn);
String sample = (String) ob.readObject();
return sample;
}
答案 0 :(得分:4)
很难理解这个问题的含义,但是如果你只想读取.txt文件中的行和数组,那么这两种方法可能会有所帮助。
您只需致电String[] textArray = readFromFile("yourfilename.txt");
这将为您提供一个数组,其中文件中的每一行都作为元素。
Scanner fScan(String filename) {
Scanner sc = null;
try {
sc = new Scanner(new File(fname));
} catch (FileNotFoundException e) {
System.out.println("File not found:" + fname + " " + e);
}
return sc;
}
String[] readFromFile (String fname) {
Scanner sc = fScan(fname);
int length = 0;
String lineCounter;
while (sc.hasNext()){
lineCounter = sc.nextLine();
length++;
}
String[] array = new String[length];
sc = fScan(fname);
for (int i = 0; i < length; i++) {
array[i] = sc.nextLine();
}
sc.close();
return array;
}
答案 1 :(得分:3)
您的代码只读取二进制文件中的第一个元素。
public static void restore(String filename) throws IOException, ClassNotFoundException
{
FileInputStream fn = new FileInputStream(filename);
ObjectInputStream ob = new ObjectInputStream(fn);
String string1 = (String) ob.readObject();
String string2 = (String) ob.readObject();
}
您确定在序列化文件时没有覆盖文件吗?
但据我了解你的问题,你不想序列化/反序列化一个String-Object,而不是读/写一个文本文件。
如果您只是想读/写一个文件,那么您使用ObjectInputStream是错误的。
看看: http://download.oracle.com/javase/1.3/docs/api/java/io/BufferedReader.html