java.io.IOException: Stream closed
at java.io.BufferedWriter.ensureOpen(Unknown Source)
at java.io.BufferedWriter.write(Unknown Source)
at java.io.Writer.write(Unknown Source)
at CommodityManage.write(CommodityManage.java:86)
at CommodityManage.add(CommodityManage.java:25)
at Command.analyse(Command.java:14)
at Server.main(Server.java:24)
这是出现的问题
public void write(String filepath){
try{
String encoding = "GBK";
File f=new File(filepath);
if(f.isFile()&&f.exists()){
BufferedWriter bw=new BufferedWriter(new FileWriter(f,false));
for(int i=0;i<commoditylist.size();i++){
bw.write(getInfo(commoditylist.get(i))+"\r\n");
bw.close();
}
}else{
f.createNewFile();
}
}catch(Exception e){
e.printStackTrace();
}
}
这是代码,哪里有问题了呀
FileInputStream is = new FileInputStream(".");
BufferedInputStream bis = new BufferedInputStream(is);
bis.close();
ä»è®¾è®¡æ¨¡å¼ä¸çï¼
java.io.BufferedInputStreamæ¯java.io.InputStreamçè£ é¥°ç±»ã
BufferedInputStreamè£ é¥°ä¸ä¸ª InputStream 使ä¹å ·æç¼å²åè½ï¼isè¦å ³éåªéè¦è°ç¨æç»è¢«è£ 饰åºç对象ç close()æ¹æ³å³å¯ï¼å 为å®æç»ä¼è°ç¨çæ£æ°æ®æºå¯¹è±¡ç close()æ¹æ³ã
BufferedInputStreamçcloseæ¹æ³ä¸å¯¹InputStreamè¿è¡äºå ³éï¼ä¸é¢æ¯jdkä¸é带çæºä»£ç ï¼
java.io.BufferedInputStreamçapi:
close
public void close()throws IOException å ³éæ¤è¾å ¥æµå¹¶éæ¾ä¸è¯¥æµå ³èçææç³»ç»èµæºã
å æ¤ï¼å¯ä»¥åªè°ç¨å¤å±æµçcloseæ¹æ³å ³éå ¶è£ é¥°çå å±æµï¼éªè¯ä¾åï¼
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:\\a.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("java IO close test");
bw.close();
}
éªè¯ok
总体说有:文件不存在,读取写入出错(如磁盘硬件错误、写保护、无空间等),权限问题(文件被锁定、无访问权限等)
EOFException:
当输入过程中意外到达文件或流的末尾时,抛出此异常。
此异常主要被数据输入流用来表明到达流的末尾。注意,其他许多输入操作返回一个特殊值表示到达流的末尾,而不是抛出异常。
FileLockInterruptionException:
当某个线程正在等待获取文件锁定时被另一个线程中断,则由该线程接收此经过检查的异常。抛出此异常之前,将设置以前被阻塞的线程的中断状态。
FileNotFoundException:
当试图打开指定路径名表示的文件失败时,抛出此异常。
在不存在具有指定路径名的文件时,此异常将由 FileInputStream、FileOutputStream 和
RandomAccessFile
构造方法抛出。如果该文件存在,但是由于某些原因不可访问,比如试图打开一个只读文件进行写入,则此时这些构造方法仍然会抛出该异常。
IIOException:
该异常类用于发出关于读取和写入操作的运行时故障的信号。
InterruptedIOException:
I/O 操作已中断信号,抛出此异常。抛出 InterruptedIOException
指示输入或输出传输已经终止,原因是执行此操作的线程中断。字段 bytesTransferred
指示在发生中断之前已成功传输了多少字节。
这样可以么?