如何在java中读取文本文件中添加的新行
我一直在尝试使用randomacess读取新行,但我无法存储上一次迭代的文件指针,并将其与最新文件的行尾进行比较,并读取差异 感谢您的帮助如何在java中读取文本文件中添加的新行,java,Java,我一直在尝试使用randomacess读取新行,但我无法存储上一次迭代的文件指针,并将其与最新文件的行尾进行比较,并读取差异 感谢您的帮助 try { String data =fromNode+" "+message+" "+toNode; File fileTo = new File(File.separator + "Users" + File.separator + "Apoorv" + File.separato
try {
String data =fromNode+" "+message+" "+toNode;
File fileTo = new File(File.separator + "Users" + File.separator
+ "Apoorv" + File.separator + "Desktop" + File.separator
+ "Files" + File.separator + "to" + toNode + ".txt");
File fileFrom = new File(File.separator + "Users" + File.separator
+ "Apoorv" + File.separator + "Desktop" + File.separator
+ "Files" + File.separator + "from" + fromNode + ".txt");
// if file does not exists, then create it
if (!fileTo.exists()) {
fileTo.createNewFile();
}
if (!fileFrom.exists()) {
fileFrom.createNewFile();
}
// true = append file
FileWriter fileWritter = new FileWriter(fileTo, true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(data);
bufferWritter.newLine();
bufferWritter.close();
//logic to check whether there exist a link between the nodes
for (int i=0;i< pairUniList.size() - 1; i++){
if(pairUniList.get(i).getX()==fromNode && pairUniList.get(i).getY()==toNode){
//System.out.println("values: "+ pairList.get(i).getX()+"---"+fromNode+"---->"+pairList.get(i).getY()+"---"+toNode);
FileWriter fileWritterfrom = new FileWriter(fileFrom,
true);
// System.out.println("------>"+data);
BufferedWriter bufferWritterfrom = new BufferedWriter(
fileWritterfrom);
bufferWritterfrom.write(data);
bufferWritterfrom.newLine();
bufferWritterfrom.close();
}
}
System.out.println("Files have been created");
//trying to check for the end of line
RandomAccessFile myFile = new RandomAccessFile(fileTo,"rw");
// Set write pointer to the end of the file
myFile.seek(myFile.length());
System.out.println("***");
// Write to end of file here
} catch (IOException e) {
e.printStackTrace();
}
// ******************************************************************
}
试试看{
字符串数据=fromNode+“”+message+“”+toNode;
File fileTo=新文件(File.separator+“Users”+File.separator
+“Apoorv”+File.separator+“Desktop”+File.separator
+“文件”+File.separator+“到”+toNode+“.txt”);
File fileFrom=新文件(File.separator+“Users”+File.separator
+“Apoorv”+File.separator+“Desktop”+File.separator
+“Files”+File.separator+“from”+fromNode+“.txt”);
//如果文件不存在,则创建它
如果(!fileTo.exists()){
fileTo.createNewFile();
}
如果(!fileFrom.exists()){
fileFrom.createNewFile();
}
//true=追加文件
FileWriter FileWriter=newfilewriter(fileTo,true);
BufferedWriter BufferWriter=新的BufferedWriter(文件写入器);
写入(数据);
bufferwriter.newLine();
bufferwriter.close();
//检查节点之间是否存在链接的逻辑
对于(inti=0;i“+pairList.get(i).getY()+”--“+toNode”);
FileWriter FileWriterFrom=新的FileWriter(fileFrom,
正确的);
//System.out.println(“------>”+数据);
BufferedWriter BufferWriterFrom=新的BufferedWriter(
FileWriterFrom);
bufferWritterfrom.write(数据);
bufferWriterFrom.newLine();
bufferWriterFrom.close();
}
}
System.out.println(“文件已创建”);
//正在尝试检查行的结尾
RandomAccessFile myFile=新的RandomAccessFile(fileTo,“rw”);
//将写指针设置为文件的结尾
seek(myFile.length());
System.out.println(“***”);
//在此处写入到文件末尾
}捕获(IOE异常){
e、 printStackTrace();
}
// ******************************************************************
}
代码示例
这就解决了我每秒读一行新词的问题 我只想每隔一秒钟读一次新添加的内容。如果您能向我们展示一些您尝试过的代码,那就太好了。您可能想查看管道,我一直在尝试使用seek命令,但由于它不返回任何值,我只需要一个workaround@LorenzoBoccaccia我必须使用一些逻辑编写一个文本文件,并且每隔一秒钟检查该文件是否有新添加,如果有,则使用一些逻辑将新添加的内容复制到其他文件。
try {
FileInputStream fstream = new FileInputStream(
File.separator + "Users" + File.separator + "Desktop" + File.separator
+ "Files" + File.separator + "from" + fromNode + ".txt");
@SuppressWarnings("resource")
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String line;
while (true) {
line = br.readLine();
if (line == null) {
Thread.sleep(1000);
} else {
System.out.println(line);
}
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}