【发布时间】:2012-04-01 19:10:10
【问题描述】:
我有一个临时文件
File myTmpFile = File.createTempFile( prefix, suffix );
表示通过
导出的xmlPreferences.exportSubtree(OutputStream);
现在我想导入这个文件:
Preferences.importPreferences( new FileInputStream( myTmpFile ));
但是 Stream 抛出一个带有 Message("Result too large") 的 IOException。
这是什么意思?我该如何解决这个问题?
java.io.IOException: Result too large
at java.io.FileInputStream.read(Native Method)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2932)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:704)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at java.util.prefs.XmlSupport.loadPrefsDoc(XmlSupport.java:233)
at java.util.prefs.XmlSupport.importPreferences(XmlSupport.java:182)
at java.util.prefs.Preferences.importPreferences(Preferences.java:1236)
at MyPreferences.importPrefs(MyPreferences.java:322)
public static void importPrefs(File file){
FileInputStream is = null;
try {
is = new FileInputStream(file);
java.util.prefs.Preferences.importPreferences( is );
} catch( FileNotFoundException e ) {
} catch( IOException e ) {
e.printStackTrace();
} catch( InvalidPreferencesFormatException e ) {
} finally {
if (is != null) {
try {
is.close();
} catch( IOException e ) {
}
}
}
}
【问题讨论】:
-
您能发布完整的堆栈跟踪吗?还有
importPreferences()的代码?我猜问题出在importPreferences()方法上。 -
本地方法的 IOException 中没有堆栈跟踪。第2932行的
RewindableInputStream通过访问抛出异常。 -
importPreferences()也是本机方法吗?如果没有发布代码。问题在于InputStreams在importPreferences()方法中的使用方式 -
不,异常来自本机方法,
FileInputStream.read()。importPreferences()来自java.util.prefs.Preferences -
在
IOExceptioncatch块中写一个打印语句,以确保!Preferences.importPreferences()的 javadoc 说Throws: IOException - if reading from the specified input stream results in an IOException.
标签: java xml inputstream ioexception