文件管理 · 2024年7月13日

java检测文件修改|java读取、修改、写入txt文件

A. java如何读取并修改txt文件

Java IO系统里读写文件使用Reader和Writer两个抽象类,Reader中read()和close()方法都是抽象方法。Writer中 write(),flush()和close()方法为抽象方法。子类应该分别实现他们。Java IO已经为我们提供了三个方便的Reader的实现类,FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。FileReader读txt文件例子 FileReader fr = new FileReader("D:/Test.txt"); int ch = 0; while((ch = fr.read())!=-1 ){ System.out.print( (char)ch ); } 其中read()方法返回的是读取得下个字符。InputStreamReader读txt文件例子 InputStream is = new FileInputStream(new File("D:/Test.txt")); InputStreamReader fr = new InputStreamReader(is); int ch = 0; while((ch = fr.read())!=-1 ){ System.out.print((char)ch); } 这和FileReader并没有什么区别,事实上在FileReader中的方法都是从InputStreamReader中继承过来的。 read()方法是比较好费时间的,如果为了提高效率,我们可以使用BufferedReader对Reader进行包装,这样可以提高读取得速度,我们可以一行一行的读取文本,使用 readLine()方法。 BufferedReader br = new BufferedReader(new FileReader("Test.txt"))); String data = br.readLine();//一次读入一行,直到读入null为文件结束 while( data!=null){ System.out.println(data); data = br.readLine(); //接着读下一行 } 当你明白了如何用Reader来读取文本文件的时候那么用Writer写文件同样非常简单。有一点需要注意,当你写文件的时候,为了提高效率,写入的数据会先放入缓冲区,然后写入文件。因此有时候你需要主动调用flush()方法。有读就有写,写文本文件可以使用PrintWriter,FileWriter,BufferedWriter。 FileWriter fw = new FileWriter("D:/Test.txt"); String s = "hello world"; fw.write(s,0,s.length()); fw.flush(); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:/Test1.txt")); osw.write(s,0,s.length()); osw.flush(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:/Test2.txt")),true); pw.println(s); fw.close(); osw.close(); pw.close(); 如果想接着写入某个文件。 声明时FileWriter fw = new FileWriter("log.txt",true);加个true就可以了。File file = new File("D:/Test.txt"); File dest = new File("D:/new.txt"); try { BufferedReader reader = new BufferedReader(new FileReader(file)); BufferedWriter writer = new BufferedWriter(new FileWriter(dest)); String line = reader.readLine(); while(line!=null){ writer.write(line); line = reader.readLine(); } writer.flush(); reader.close(); writer.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }

B. java如何判断文件是否被更新过

在数据库中增加一个字段,int的,初始为0,每次更新字段加1.判断字段值就知道更新了几次了.我对出c/s的不是很熟悉,你看看这个网址的吧 http://topic.csdn.net/u/20081031/19/4628786f-ad82-44e8-a44a-063c9774c339.html

C. java编写程序获取指定文件的最后修改时间

package com.xian.home2;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.List;public class FileOperate {/** * @param args */public static void main(String[] args) {//FileOperate fo = new FileOperate();//String filepath = "G:\\02";//fo.getFileList(filepath);getCreateTime();}public List<File> getFileList(String filepath) {try {File file = new File(filepath);if (file.isDirectory()) {String[] filelist = file.list();for (int i = 0; i < filelist.length; i++) {File Ifile = new File(filepath + "\\" + filelist[i]);FileInputStream fis = new FileInputStream(Ifile); long modifiedTime = Ifile.lastModified(); Date date=new Date(modifiedTime); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:MM"); String dd=sdf.format(date);System.out.println("File name:" + Ifile.getName()+ " \tFile size: "+ (double) ((double) fis.available() / 1024 / 1024)+ "M"+ " \tFile create Time: "+dd);}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}/** * 读取文件创建时间 */ public static void getCreateTime(){ String filePath = "G:\\02\\123.txt"; String strTime = null; try { Process p = Runtime.getRuntime().exec("cmd /C dir " + filePath + "/tc" ); InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while((line = br.readLine()) != null){ if(line.endsWith(".txt")){ strTime = line.substring(0,17); break; } } } catch (IOException e) { e.printStackTrace(); } System.out.println("创建时间 " + strTime); //输出:创建时间 2009-08-17 10:21 } /** * 读取文件修改时间的方法1 */ @SuppressWarnings("deprecation") public static void getModifiedTime_1(){ File f = new File("C:\\test.txt"); Calendar cal = Calendar.getInstance(); long time = f.lastModified(); cal.setTimeInMillis(time); //此处toLocalString()方法是不推荐的,但是仍可输出 System.out.println("修改时间[1] " + cal.getTime().toLocaleString()); //输出:修改时间[1] 2009-8-17 10:32:38 } /** * 读取修改时间的方法2 */ public static void getModifiedTime_2(){ File f = new File("C:\\test.txt"); Calendar cal = Calendar.getInstance(); long time = f.lastModified(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); cal.setTimeInMillis(time); System.out.println("修改时间[2] " + formatter.format(cal.getTime())); //输出:修改时间[2] 2009-08-17 10:32:38 } }

D. 用java编写记事本,如何在退出时检查是否与修改过文件内容

最近刚好在写记事本程序作业。该部分代码如下:else if ("退出".equals(comm)) {int s = JOptionPane.showConfirmDialog(this, "确定要退出系统吗?", "Java程序设计综合实验", JOptionPane.YES_NO_OPTION);if (s == JOptionPane.YES_OPTION) {int s1 = JOptionPane.showConfirmDialog(this, "是否要保存文件?", "Java程序设计综合实验",JOptionPane.YES_NO_CANCEL_OPTION);if (s1 == JOptionPane.YES_OPTION) {JFileChooser jfc = new JFileChooser("D:\\");if (flag) {int returnVal = jfc.showDialog(null, "保存");if (returnVal == JFileChooser.APPROVE_OPTION) {// 选择文件后再执行下面的语句,保证了程序的健壮性f = jfc.getSelectedFile();flag = false;write();}} else {write();}System.exit(0);}if (s1 == JOptionPane.NO_OPTION)System.exit(0);}}

E. java读取、修改、写入txt文件

Java IO系统里读写文件使用和Writer两个抽象类,Reader中read()和close()方法都是抽象方法。Writer中 write(),flush()和close()方法为抽象方法。子类应该分别实现他们。Java IO已经为我们提供了三个方便的Reader的实现类,FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。FileReader读txt文件例子FileReader fr = new FileReader("D:/Test.txt"); int ch = 0; while((ch = fr.read())!=-1 ){ System.out.print( (char)ch ); } 其中read()方法返回的是读取得下个字符。InputStreamReader读txt文件例子InputStream is = new FileInputStream(new File("D:/Test.txt")); InputStreamReader fr = new InputStreamReader(is); int ch = 0; while((ch = fr.read())!=-1 ){ System.out.print((char)ch); } 这和FileReader并没有什么区别,事实上在FileReader中的方法都是从InputStreamReader中继承过来的。 read()方法是比较好费时间的,如果为了提高效率,我们可以使用BufferedReader对Reader进行包装,这样可以提高读取得速度,我们可以一行一行的读取文本,使用 readLine()方法。BufferedReader br = new BufferedReader(new FileReader("Test.txt"))); String data = br.readLine();//一次读入一行,直到读入null为文件结束 while( data!=null){ System.out.println(data); data = br.readLine(); //接着读下一行 } 当你明白了如何用Reader来读取文本文件的时候那么用Writer写文件同样非常简单。有一点需要注意,当你写文件的时候,为了提高效率,写入的数据会先放入缓冲区,然后写入文件。因此有时候你需要主动调用flush()方法。有读就有写,写文本文件可以使用PrintWriter,FileWriter,BufferedWriter。FileWriter fw = new FileWriter("D:/Test.txt"); String s = "hello world"; fw.write(s,0,s.length()); fw.flush(); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:/Test1.txt")); osw.write(s,0,s.length()); osw.flush(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:/Test2.txt")),true); pw.println(s); fw.close(); osw.close(); pw.close(); 如果想接着写入某个文件。 声明时FileWriter fw = new FileWriter("log.txt",true);加个true就可以了。File file = new File("D:/Test.txt"); File dest = new File("D:/new.txt"); try { BufferedReader reader = new BufferedReader(new FileReader(file)); BufferedWriter writer = new BufferedWriter(new FileWriter(dest)); String line = reader.readLine(); while(line!=null){ writer.write(line); line = reader.readLine(); } writer.flush(); reader.close(); writer.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }

F. 用java怎么判断FTP上的文件大小改变了

日志目录:已经架设了一个IIS下的FTP服务器,应该如何查看连接日志?答:利用IIS架设的FTP服务器不能实时看到连接的具体情况,不过可以在C:\Winnt\system32\logfiles目录中查看到连接上FTP服务器的IP地址、时间等日志信息。如何开启日志:在默认FTP站点属性对话框中,切换到“FTP站点”标签页,一定要确保“启用日志记录”选项被选中,这样就可以在“事件查看器”中查看FTP日志记录了。我感觉,这种方法也不是实时的,你只是将轮询文件变成了轮询日志,一样的感觉。你如果想变成实时的,就是说文件大小一发生改变就通知你。我想到的办法是这样的。你再做一个系统,这个系统可以较大频率的去轮询日志或者文件,因为这个系统可以架设在别的机器上,所以不会影响你系统的性能。然后在你系统中建立一个webservice,提供下载那个文件的服务,当那个系统发现更改时调用你的webservice,你就可以下载了。我觉得这只是一种折中的办法,而且也比较费事,如果没有实时的要求,还是定时轮询的好。 PS:实话说不知道你为什么要检验文件的大小,有时内容改变不一定大小会变得。你可以记录文件上一次的修改时间。然后当这个发生改变时再取就是了。

G. 如何用java判断一个文件正在被其他进程修改

JAVA本身判断不到,只可以判断是否打开失败~~~~~~~~~~~~~

H. 如何通过java实现对指定目录下的txt文件进行增删改查

代码如下:

importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.util.ArrayList;importjava.util.List;publicclassApp61{publicstaticvoidmain(String[]args)throwsIOException{//查找行输出Stringline=findFileLine("mylist.txt","abc");System.out.println(line);//删除指定行removeFileLine("mylist.txt",2);}staticvoidremoveFileLine(Stringfile,intline)throwsIOException{List<String>lines=readFileLines(file);lines.remove(line-1);FileOutputStreamoutputStream=null;=null;BufferedWriterwriter=null;try{outputStream=newFileOutputStream(file);streamWriter=newOutputStreamWriter(outputStream);writer=newBufferedWriter(streamWriter);for(Stringstr:lines){writer.write(str+System.lineSeparator());}}finally{if(writer!=null){writer.close();}if(streamWriter!=null){streamWriter.close();}if(outputStream!=null){outputStream.close();}}}//查找行staticStringfindFileLine(Stringfile,Stringkeywork)throwsIOException{List<String>lines=readFileLines(file);for(Stringline:lines){if(line.contains(keywork)){returnline;}}return"";}//返回文件所有行staticList<String>readFileLines(Stringfile)throwsIOException{List<String>lines=newArrayList<>();FileInputStreaminputStream=null;InputStreamReaderstreamReader=null;BufferedReaderreader=null;try{inputStream=newFileInputStream(file);streamReader=newInputStreamReader(inputStream);reader=newBufferedReader(streamReader);Stringline="";while((line=reader.readLine())!=null){lines.add(line);}}finally{if(reader!=null){reader.close();}if(streamReader!=null){streamReader.close();}if(inputStream!=null){inputStream.close();}}returnlines;}}

I. java io流对文件的增删改查

可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到的内容,之后通过if判断来实现在某些特定位置的查找、增加、删除、修改操作。举例:BufferedReader bre = null;OutputStreamWriter pw = null;//定义一个流try {String file = "D:/test/test.txt";bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环{if(str.indexOf("排除")<0){//判断是否需要舍弃pw.write(str);//将要写入文件的内容,可以多次write}}bre.close();//关闭流pw.close();//关闭流解释:以上方法是实现的删除,if中的条件改变下,即可实现其余的功能。备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。