public class ReaderAndWriterDemo {
public static void main(String[] args) {
Collection <Integer>list=new ArrayList<Integer>();
try {
DataInputStream input = new DataInputStream(new FileInputStream("d:\\FileDemo1.txt"));
DataOutputStream output = new DataOutputStream(new FileOutputStream("e:\\FileDemo1.txt"));
int m=input.readInt();
while(m!=-1)
list.add(Integer.valueOf(m));
input.close();
Object a[]=list.toArray();
Arrays.sort(a);
Iterator <Integer> itr=list.iterator();
if(itr.hasNext()){
int x=(int)itr.next();
output.writeInt(x);
}
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.Integer.valueOf(Integer.java:585)
at com.xyd.java.lesson12.ReaderAndWriterDemo.main(ReaderAndWriterDemo.java:18)(list.add(Integer.valueOf(m));
)
public static void main(String[] args) {
Collection <Integer>list=new ArrayList<Integer>();
try {
DataInputStream input = new DataInputStream(new FileInputStream("d:\\FileDemo1.txt"));
DataOutputStream output = new DataOutputStream(new FileOutputStream("e:\\FileDemo1.txt"));
int m=input.readInt();
while(m!=-1)
list.add(Integer.valueOf(m));
input.close();
Object a[]=list.toArray();
Arrays.sort(a);
Iterator <Integer> itr=list.iterator();
if(itr.hasNext()){
int x=(int)itr.next();
output.writeInt(x);
}
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.Integer.valueOf(Integer.java:585)
at com.xyd.java.lesson12.ReaderAndWriterDemo.main(ReaderAndWriterDemo.java:18)(list.add(Integer.valueOf(m));
)
解决方案 »
- Elipse程序运行的问题
- 如何将byte[]字节数组转换为字符串?
- 在线求一个JFRAM问题,
- 急珍~!~!~!
- 用JBuilder2005进行编译程序的时候老是出现下面错误提示?该怎么办啊?
- 如何整合apache2.0.49与tomcat5.0.19?(100分求apache和tomcat的整合方案)
- java mail 发送hotmail邮件出问题,看看问题在哪里?
- ----关于JPanel的问题----
- Label类或者jLabel类可否支持鼠标双击事件响应?谢谢
- 刚学完javaSe,遇到个很难的问题,百思不得其解
- 请问怎么把一个文件夹打成jar包,不是当前的项目,是把项目生成的一个文件夹打成jar包
- java小应用的配置文件的选择问题。
list.add(Integer.valueOf(m));
有个死循环在这一直给list添加数据,所以会堆栈溢出。
你的本意是不是下面这样?
while(m!=-1){
int m=input.readInt();
list.add(Integer.valueOf(m));
}
list.add(Integer.valueOf(m));
经鉴定这个语句外面好像还该有个什么东东。 但是什么呢?不知道
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:375)
at com.xyd.java.lesson12.ReaderAndWriterDemo.main(ReaderAndWriterDemo.java:19)
出现End Of File异常,应该是读到文件尾了但你还在读,有可能是程序设计有误,不过有些读写操作方法就是以EOFException判断是否到达文件尾的。
另外:同意9楼的说法,请自己多检查、思考,实在没办法时再提问,绝对有益。
while (true) {
m = input.readInt();
list.add(m); // auto boxing
}
} catch (EOFException e) {
/* do nothing */
} finally {
try {
input.close();
} catch (IOException) { /* can do nothing */ }
}我猜楼主是想用 while (m != EOF) 但是 Java 中没有这个东西。DataInputStream 用 EOFException 表示 EOF 的情况。如果楼主确实想把不等于 -1 这个数字的 int 放进 list 里,那么用
while ((m = input.readInt()) != -1)
代替上面的 while (true) m = input.readInt 即可。