java读写文件java读取文件属性

java读写文件  时间:2021-07-13  阅读:()

Java读写文件的几种方法

java读取配置文件的几种方法如下: 方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。

因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。

文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。

因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。

缺点:不能在servlet外面应用读取配置信息。

方式二:采用ResourceBundle类读取配置信息, 优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。

缺点:只能加载类classes下面的资源文件且只能读取.properties文件。

java怎样读取本地文件夹下的文件

1 2 3 4 5 6 7 8 9 10 ??File?file?=?newFile("WebRoot\test.html"); ?BufferedReader?bufferedReader?=? ?newBufferedReader(newInputStreamReader(newFileInputStream(file)));????????? ????String?row?=?null; ???StringBuffer?sb?=?newStringBuffer(); ????while((row?=?bufferedReader.readLine())?!=?null)?{ ????System.out.println(row); ??????sb.append(row); ?????} ???bufferedReader?.close();

java 如何读取大文件

以下将从常规方法谈起,通过对比来说明应该如何使用java读取大文件。

1、常规:在内存中读取 读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法: Files.readLines(new File(path), Charsets.UTF_8); FileUtils.readLines(new File(path)); 这种方法带来的问题是文件的所有行都被存放在内存中,当文件足够大时很快就会导致程序抛出OutOfMemoryError 异常。

例如:读取一个大约1G的文件: @Test public void givenUsingGuava_whenIteratingAFile_thenWorks() throws IOException { String path = ... Files.readLines(new File(path), Charsets.UTF_8); } 这种方式开始时只占用很少的内存:(大约消耗了0Mb内存) 然而,当文件全部读到内存中后,我们最后可以看到(大约消耗了2GB内存): 这意味这一过程大约耗费了2.1GB的内存——原因很简单:现在文件的所有行都被存储在内存中。

把文件所有的内容都放在内存中很快会耗尽可用内存——不论实际可用内存有多大,这点是显而易见的。

此外,我们通常不需要把文件的所有行一次性地放入内存中——相反,我们只需要遍历文件的每一行,然后做相应的处理,处理完之后把它扔掉。

所以,这正是我们将要做的——通过行迭代,而不是把所有行都放在内存中。

2、文件流 FileInputStream inputStream = null; Scanner sc = null; try { inputStream = new FileInputStream(path); sc = new Scanner(inputStream, "UTF-8"); while (sc.hasNextLine()) { String line = sc.nextLine(); // System.out.println(line); } // note that Scanner suppresses exceptions if (sc.ioException() != null) { throw sc.ioException(); } } finally { if (inputStream != null) { inputStream.close(); } if (sc != null) { sc.close(); } } 这种方案将会遍历文件中的所有行——允许对每一行进行处理,而不保持对它的引用。

总之没有把它们存放在内存中:(大约消耗了150MB内存) 3、Apache Commons IO流 同样也可以使用Commons IO库实现,利用该库提供的自定义LineIterator: LineIterator it = FileUtils.lineIterator(theFile, "UTF-8"); try { while (it.hasNext()) { String line = it.nextLine(); // do something with line } } finally { LineIterator.closeQuietly(it); } 由于整个文件不是全部存放在内存中,这也就导致相当保守的内存消耗:(大约消耗了150MB内存)

JAVA 的输入输出,读取写入文件

//将内容追加到文件尾部 import java.io.FileWriter; import java.io.IOException; import essFile; /** * 将内容追加到文件尾部 */ public class AppendToFile { /** * A方法追加文件:使用essFile * @param fileName 文件名 * @param content 追加的内容 */ public static void appendMethodA(String fileName, String content){ try { // 打开一个随机访问文件流,按读写方式 essFile randomFile = new essFile(fileName, "rw"); // 文件长度,字节数 long fileLength = randomFile.length(); //将写文件指针移到文件尾。

randomFile.seek(fileLength); randomFile.writeBytes(content); randomFile.close(); } catch (IOException e){ e.printStackTrace(); } } /** * B方法追加文件:使用FileWriter * @param fileName * @param content */ public static void appendMethodB(String fileName, String content){ try { //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件 FileWriter writer = new FileWriter(fileName, true); writer.write(content); writer.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { String fileName = "C:/temp/newTemp.txt"; String content = "new append!"; //按方法A追加文件 AppendToFile.appendMethodA(fileName, content); AppendToFile.appendMethodA(fileName, "append end. "); //显示文件内容 ReadFromFile.readFileByLines(fileName); //按方法B追加文件 AppendToFile.appendMethodB(fileName, content); AppendToFile.appendMethodB(fileName, "append end. "); //显示文件内容 ReadFromFile.readFileByLines(fileName); } } 本篇文章来源于:开发学院 原文链接:/2010/0323/21269_2.php

java读取文件属性

//看看吧..对你会有帮助 public class FilecTest { public static void main(String args[]) { File f=new File("c:\1.txt"); System.out.println(f.isDirectory()); //测试此抽象路径名表示的文件是否是一个目录。

System.out.println(f.getAbsoluteFile()); //返回抽象路径名的绝对路径名形式 System.out.println(f.getAbsolutePath()); //返回抽象路径名的绝对路径名字符串。

System.out.println(f.isAbsolute()); //测试此抽象路径名是否为绝对路径名 System.out.println(f.isDirectory()); //测试此抽象路径名表示的文件是否是一个目录 long modifyDate = f.lastModified(); //得到最后修改日期 if (modifyDate!=0){ System.out.println(" 最后修改日期: "+new Date(modifyDate)); //返回此抽象路径名表示的文件最后一次被修改的时间。

} System.out.println(new Date(modifyDate)); //返回此抽象路径名表示的文件最后一次被修改的时间。

System.out.println(f.length()); //返回由此抽象路径名表示的文件的长度 // System.out.println(f.renameTo(ff)); //重新命名此抽象路径名表示的文件。

} }

A400互联(49元/月)洛杉矶CN2 GIA+BGP、1Gbps带宽,全场独服永久5折优惠

a400互联是一家成立于2020年商家,主营美国机房的产品,包括BGP线路、CN2 GIA线路的云服务器、独立服务器、高防服务器,接入线路优质,延迟低,稳定性高,额外也还有香港云服务器业务。当前,全场服务器5折,香港VPS7折,洛杉矶VPS5折,限时促销!A400互联官网:https://a400.net/优惠活动全场独服永久5折优惠(续费同价):0722香港VPS七折优惠:0711洛杉矶VPS五...

RackNerd :美国大硬盘服务器促销/洛杉矶multacom数据中心/双路e5-2640v2/64G内存/256G SSD+160T SAS/$389/月

大硬盘服务器、存储服务器、Chia矿机。RackNerd,2019年末成立的商家,主要提供各类KVM VPS主机、独立服务器和站群服务器等。当前RackNerd正在促销旗下几款美国大硬盘服务器,位于洛杉矶multacom数据中心,亚洲优化线路,非常适合存储、数据备份等应用场景,双路e5-2640v2,64G内存,56G SSD系统盘,160T SAS数据盘,流量是每月200T,1Gbps带宽,配5...

华为云年中聚惠618活动,新用户专区,云服务器低至88元/年,3年仅580.98元,热销抢购中,最后2天!

华为云怎么样?华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。本次年终聚惠618活动相当给力,1核2G内存1m云耀云服务器仅88元/年起,送主机安全基础版套餐,...

java读写文件为你推荐
微信收款语音播报怎么设置微信收付款如何设置声音提示知识库管理系统什么是知识管理策略组怎样打开组策略???溢出隐藏overflow:hidden用在哪里?天融信防火墙都说天融信的产品不错,那天融信的下一代防火墙真的是当今最好的防火墙产品了吗?有b吗34B的胸围有多大?medias请帮我详细解释一下 chronological order和in medias res基础设施即服务基础设施行业的定义是什么?具体包含哪些行业?国外社交网站国外联合中国的交友网站杭州营销型网站易搜的易搜网络
已经备案域名 阿里云搜索 ddos 美元争夺战 sugarsync patcha 新站长网 500m空间 空间论坛 双十一秒杀 129邮箱 服务器是干什么的 isp服务商 ftp免费空间 服务器监测 香港亚马逊 便宜空间 smtp服务器地址 秒杀品 php服务器 更多