2011-12-01 45 views
4

它看起来像Properties.load()愉快地加载二进制垃圾,除非它发现一个无效的\uxxxx转义字符。有没有更严格的方法?我只是看了the text format of properties files的文档,我很困惑如何判断.properties文件是否有效。Java文本属性文件:有什么方法可以测试合法性吗?


编辑:在那里我从这个未来:我想如果我指着我的应用程序10MB的二进制文件,它会拒绝它。 10MB文件确实被拒绝,但只是因为\uxxxx字符。

我想我可以在输入流上创建一个过滤器来限制一些“理智”的数量,比如1MB,并且过滤掉键与可接受模式不匹配的任何键/值对。但我希望它可以有一些最小的结构来拒绝严重损坏的文件。

+0

这是什么意思是“有效”(除了坏字符)?关于你所能做的就是检查它是否以一个有效的'foo ='(或注释)开头,对于所有非续行的行也是如此。 –

+0

@DᴀᴠᴇNᴇᴡᴛᴏɴ:一行中的'foo'等同于将'foo'设置为空字符串。 – ninjalj

+0

@ninjalj哦:(更难的是, –

回答

2

属性文件应该是一个通用格式。应用程序的责任是确保每个单独的财产具有合理的价值。

1

检查这个page。它说,load方法抛出IllegalArgumentException - 如果输入流包含格式错误的Unicode转义序列。

+0

回复:“检查此页面” - 我做了,谢谢。 –

相关问题