在JAVA文件处理中重置文件指针
大家好,我对java非常陌生,决定编写一个投票应用程序,并利用jdbc和文件处理。 我似乎无法将文件指针返回到文件的起始位置,并且在使用标记和重置时,它会返回一个名为“标记无效”的错误,即使它将标记支持返回为真。下面是我的代码片段在JAVA文件处理中重置文件指针,java,file-handling,Java,File Handling,大家好,我对java非常陌生,决定编写一个投票应用程序,并利用jdbc和文件处理。 我似乎无法将文件指针返回到文件的起始位置,并且在使用标记和重置时,它会返回一个名为“标记无效”的错误,即使它将标记支持返回为真。下面是我的代码片段 import java.sql.*; import java.util.*; import java.io.*; public class Voting_App { static Connection con; static Statement crs
import java.sql.*;
import java.util.*;
import java.io.*;
public class Voting_App {
static Connection con;
static Statement crsr;
static BufferedReader br;
static Writer fw;
static File f;
static FileInputStream fstream;
static {
try {
fw= new FileWriter("posts.txt",true);
fstream = new FileInputStream("posts.txt");
br= new BufferedReader(new InputStreamReader(fstream));
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/vote","root","root");
crsr= con.createStatement();
f= new File("posts.txt");
}
catch (SQLException e) {
e.printStackTrace();
}
catch (IOException i) {
i.printStackTrace();
}
}
static void disp_post() throws IOException {
br.mark(0);
String line;
int i=1;
if (f.length()!=0) {
while ((line=br.readLine())!=null) {
System.out.println(i+"."+line);
i++;
}
br.reset();
}
else {
System.out.println("There no posts currently");
}
}
这里重置文件指针,您只需使用
seek(0)
在你的代码中。
如果需要,还可以使用
getFilePointer()
另外,如果我没有使用其他良好的编码实践,请指出它们。谢谢你为什么你的投票应用程序中的一切都是静态的?我会用camel case来表示类,所以改用VotingApp,就像你的类中的所有其他类一样,你的缓冲区是空的,你用mark(0)
标记什么,如果(f.length()!=0)不需要写{
如果找不到该文件,它将抛出NPE
i的目的是什么?为什么所有可关闭的类都是静态的?@RAZ_Muh_Taz我没有使用任何其他java文件或类,所以我没有找到创建对象的理由,因为我可以按原样编写static@emotionlessbananas怎么是空的?什么时候在我第一次调用函数时,它会打印所有帖子。如果可能的话,请更正格式。我尽了最大努力使用格式。如果格式不对,很抱歉。啊,是的,这实际上类似于Python的文件处理。我会尝试一下,尽快让你知道。是的,请尝试一下,我之前使用过它,所以我只是建议你这样做。它比谢谢你提出这个解决方案现在我可以安心睡觉了XD