各位老师帮忙看看,我是刚接触Java的新手,下面程序代码是昨天在学习中根据书本上的程序修改过的,将文件写与读分两个类,可是在执行程序时出错,出错代码提示说问题是出在第39和104行中,我看出来就是在合并文件流时出错,经过认真的研究觉得应该是错在我使用方法时传递参数不对,由于经验不足还是没有搞懂,所以来园子求助,有知道的老师请指导一下,先谢谢了!
附上出错截图
1 import java.io.*; 2 public class WRDemo 3 { 4 public static void main(String[] args) throws IOException 5 { 6 //实例化WriterFile和ReaderFile对象 7 WriterFile w=new WriterFile(); 8 ReaderFile r=new ReaderFile(); 9 //声明两个文件读入流 10 FileInputStream in1=null,in2=null; 11 File inputFile=null; 12 try { 13 String [] filename={"d:\\java_test\\1.txt","d:\\java_test\\2.txt","d:\\java_test\\12.txt"}; 14 for(int i=0;i<filename.length-1;i++) 15 { 16 inputFile=new File(filename[i]); 17 if(inputFile.exists()) 18 { 19 System.out.println(inputFile.getName()+"文件存在!删除重新建立文件"); 20 inputFile.delete(); 21 w.run(inputFile,i+1); 22 if(i==0) 23 in1=r.run(inputFile); 24 if(i==1) 25 in2=r.run(inputFile); 26 } 27 else { 28 System.out.println(inputFile.getName()+"文件不存在!创建文件"); 29 w.run(inputFile,i+1); 30 if(i==0) 31 in1=r.run(inputFile); 32 if(i==1) 33 in2=r.run(inputFile); 34 } 35 } 36 //构造一个输出文件 37 File outputfile=new File(filename[2]); 38 //将两个文件合为一个输入流 39 w.run1(in1,in2,outputfile); 40 System.out.println("ok..."); 41 in1.close(); 42 in2.close(); 43 44 } 45 catch (IOException ex) { 46 ex.printStackTrace(); 47 } 48 finally{ 49 if(in1!=null) 50 try 51 { 52 in1.close(); 53 } 54 catch (IOException ex) 55 { 56 ex.printStackTrace(); 57 } 58 if(in2!=null) 59 try 60 { 61 in2.close(); 62 } 63 catch (IOException ex) 64 { 65 ex.printStackTrace(); 66 } 67 } 68 } 69 } 70 class WriterFile 71 { 72 public FileOutputStream run(File f,int i) 73 { 74 //构造一个输出流 75 FileOutputStream out=null; 76 try { 77 out=new FileOutputStream(f); 78 } 79 catch (IOException ex) { 80 ex.printStackTrace(); 81 } 82 String str="我是第"+i+"个文件"+i+".txt"+"\r\n"; //这两个转义字符在Windows系统中代表换行"\r\n" 83 System.out.println("向第"+i+"个文件写入:\r\n"+str); 84 byte[] f1=str.getBytes(); 85 try { 86 //将str写入文件 87 out.write(f1); 88 out.close(); 89 } 90 catch (IOException ex) { 91 ex.printStackTrace(); 92 } 93
94 } 95 public void run1(FileInputStream in1,FileInputStream in2,File outputFile) 96 { 97 SequenceInputStream s=null; 98 FileOutputStream out=null; 99 try 100 { 101 s=new SequenceInputStream(in1,in2); 102 out=new FileOutputStream(outputFile); 103 int c; 104 while((c=s.read())!=-1) 105 out.write(c); 106 s.close(); 107 out.close(); 108 } 109 catch (IOException ex) 110 { 111 ex.printStackTrace(); 112 } 113 finally { 114 if(s!=null) 115 try 116 { 117 s.close(); 118 } 119 catch (IOException ex) 120 { 121 ex.printStackTrace(); 122 } 123 if(out!=null) 124 try 125 { 126 out.close(); 127 } 128 catch (IOException ex) 129 { 130 ex.printStackTrace(); 131 } 132 } 133 } 134 } 135 136 class ReaderFile 137 { 138 public FileInputStream run(File f) 139 { 140 //声明一个文件读入流 141 FileInputStream in =null; 142 try { 143 in=new FileInputStream(f); 144 in.close(); 145 } 146 catch (IOException ex) { 147 ex.printStackTrace(); 148 } 149 finally{ 150 if(in!=null) 151 try { 152 in.close(); 153 } 154 catch (IOException ex) { 155 ex.printStackTrace(); 156 } 157 } 158 return in; 159 } 160 }
相关推荐
程序每次解压都去PROVINCE_DIR文件下去解压,将解压后的文件存放到UN_ZIP_PATH下,之后程序启动合并程序合并UN_ZIP_PATH下文件,将合并后的文件按照省份名称存放到OUT_PATH,一个省一个文件。当解压合并结束后,...
在Java编程环境中,将两个TIFF(Tagged Image File Format)图像或普通图像合并成一个单一的TIFF或图像文件,需要对图像处理有深入的理解,特别是关于图像格式、颜色模型以及位深度的知识。以下是一些相关的技术要点...
Java 中两种方式调用其他.exe 可执行程序 Java 是一种广泛应用于企业级应用开发的编程语言,可以调用其他.exe 可执行程序,实现一些特殊的功能。在 Java 中有两种方式可以调用其他.exe 可执行程序,即使用 `Desktop...
java代码,将文件夹下文件(包括子文件夹文件),全部合并到一个目标文件中
在Java编程环境中,合并多个docx文档是一项常见的需求,特别是在处理大量Word文档的工作场景中。本文将详细介绍如何使用Java和docx4j库来实现这一功能。docx4j是一个强大的开源库,专门用于处理Microsoft Office ...
本篇文章将深入探讨如何在Java中通过文件头内容来判断文件类型。 首先,了解文件头的基本概念。文件头是指文件开始的一段字节,不同的文件格式会有不同的文件头结构。例如,JPEG图像文件的开头通常是"FF D8 FF E0...
代码实例中,定义了一个名为`Test6`的类,该类包含两个静态方法:`main`和`combine`。`main`方法是程序的入口点,它执行文件合并的过程;`recursion`方法是一个递归函数,用于遍历指定目录及其子目录,收集所有的MP3...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
这个标题为“一个用JAVA写的清除EXE病毒文件的代码”的项目,显然是利用Java来编写的一种防病毒解决方案,主要针对的是可执行文件(EXE)的病毒清理。 描述中提到的“清除EXE病毒文件的代码”,意味着这个Java程序...
在软件开发领域,尤其是对于Java开发者来说,将Java程序打包成EXE文件是一种常见的需求。这不仅可以让程序在没有安装Java运行环境(JRE)的计算机上运行,还能提高程序的安全性和便捷性。下面我们将详细介绍这一过程的...
以下是一个简单的示例,演示如何合并两个Excel文件中的第一张工作表: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io....
本篇将详细介绍如何使用Java来实现两个Excel(或CSV)文件的比对,以特定列作为键值,并比较指定列的差异。 首先,我们需要导入相关的库。由于Java标准库并不包含处理Excel或CSV的API,因此通常会使用第三方库,如...
Bin文件合并工具,支持设定偏移地址。
这个Java工程文件旨在提供一个解决方案,帮助开发者读取`.shp`文件,获取其中的几何对象坐标,并将这些坐标写入新的文件中。下面我们将深入探讨如何用Java处理`.shp`文件以及相关的技术要点。 首先,要读取`.shp`...
在Java编程中,处理大容量文本文件是一项挑战,因为传统的逐行读取方式可能会消耗大量内存,导致程序崩溃。为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行...
例如,可以创建一个子进程执行类似于`ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow output.mp4`的命令,这个命令将输入的MP4文件使用H.264编码压缩,控制质量因子(CRF)为23,预设为“slow”,以获得更...
描述指出,这个程序由三个.java文件组成:Test.java、Watch.java和AbstractRun.java,它们构成了一个简单的自动重启系统。这里,Test.java是主程序,Watch.java是用于监视和检测的线程,而AbstractRun.java可能包含...
在Java编程环境中,HttpClient库是Apache HTTP Components项目的一部分,它为开发者提供了强大的HTTP客户端功能,可以用来发送HTTP请求并接收响应。在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到...
在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定的服务器目录下。此方法已经过测试验证,能够满足基本的需求,并且代码易于...
轻松方便的把class文件转化为java文件