各位老师帮忙看看,我是刚接触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 }
相关推荐
以下是一个简单的示例代码片段,展示了如何将两个文件合并到一个新的文件中: ```java import java.io.*; public class StreamDemo_06 { public static void main(String[] args) { try { File file1 = new ...
标题中的“同名文本文件合并器”是一款工具,它的主要功能是将两个文件夹中具有相同文件名的文本文件合并成一个文件。这个工具对于处理大量分散的文本数据,特别是当需要整合相同主题但分布在不同位置的信息时非常...
在Java编程环境中,合并多个docx文档是一项常见的需求,特别是在处理大量Word文档的工作场景中。本文将详细介绍如何使用Java和docx4j库来实现这一功能。docx4j是一个强大的开源库,专门用于处理Microsoft Office ...
代码实例中,定义了一个名为`Test6`的类,该类包含两个静态方法:`main`和`combine`。`main`方法是程序的入口点,它执行文件合并的过程;`recursion`方法是一个递归函数,用于遍历指定目录及其子目录,收集所有的MP3...
本篇文章将深入探讨如何在Java中通过文件头内容来判断文件类型。 首先,了解文件头的基本概念。文件头是指文件开始的一段字节,不同的文件格式会有不同的文件头结构。例如,JPEG图像文件的开头通常是"FF D8 FF E0...
在Java编程语言中,将两张图片合成在一起是一个常见的图像处理任务。这个过程涉及到对图像文件的读取、处理以及合并,通常使用Java的内置库如`java.io`和`javax.imageio`。在这个场景中,`FileInputStream`用于读取...
在本文中,我们将深入探讨如何使用Java程序调用FFmpeg执行视频文件格式转换,特别是将非FFmpeg原生支持的格式转换为FLV格式。FFmpeg是一个强大的多媒体处理工具,支持多种视频、音频格式的编码、解码和转换。在这个...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
将Java程序转换为可执行文件的另一种方法是创建一个批处理文件(.bat),该文件可以调用Java虚拟机(JVM)来执行JAR文件。 1. **创建批处理文件**: - 在Eclipse导出JAR文件所在的目录中新建一个文本文件,例如命名...
将Java项目打包成可执行文件是一项常见的需求,尤其是在部署应用程序到非开发环境时。通过将Java项目转换为可执行文件(.exe),可以方便地在Windows操作系统上运行,无需用户安装Java运行环境(JRE)。本文将详细...
这个标题为“一个用JAVA写的清除EXE病毒文件的代码”的项目,显然是利用Java来编写的一种防病毒解决方案,主要针对的是可执行文件(EXE)的病毒清理。 描述中提到的“清除EXE病毒文件的代码”,意味着这个Java程序...
在软件开发领域,尤其是对于Java开发者来说,将Java程序打包成EXE文件是一种常见的需求。这不仅可以让程序在没有安装Java运行环境(JRE)的计算机上运行,还能提高程序的安全性和便捷性。下面我们将详细介绍这一过程的...
本篇将详细介绍如何使用Java来实现两个Excel(或CSV)文件的比对,以特定列作为键值,并比较指定列的差异。 首先,我们需要导入相关的库。由于Java标准库并不包含处理Excel或CSV的API,因此通常会使用第三方库,如...
根据给定文件的信息,本文将围绕Java操作图片的方法展开,主要涵盖往图片上添加文字以及合并多张图片的功能。这些技术在制作许可证书、安全证书等应用场景中非常实用。 ### Java操作图片概述 #### 一、加载图片 在...
在Java编程环境中,将WAV音频文件转换为MP3格式是一项常见的需求,特别是在处理音频数据时。本示例介绍如何利用LAME库在Java程序中实现这个功能,并且能够自定义MP3文件的码率。LAME是一个高效的MP3编码器,广泛用于...
Bin文件合并工具,支持设定偏移地址。
这个Java工程文件旨在提供一个解决方案,帮助开发者读取`.shp`文件,获取其中的几何对象坐标,并将这些坐标写入新的文件中。下面我们将深入探讨如何用Java处理`.shp`文件以及相关的技术要点。 首先,要读取`.shp`...
- `Dimension`类代表NetCDF文件的维度,每个变量都关联了一组维度。 - 对于写入操作,可以使用`NetcdfFileWriter`类创建新的NetCDF文件,定义维度、变量,然后写入数据。 3. **实例解析** - 在描述中提到的实例...
在Java编程中,处理大容量文本文件是一项挑战,因为传统的逐行读取方式可能会消耗大量内存,导致程序崩溃。为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行...
描述指出,这个程序由三个.java文件组成:Test.java、Watch.java和AbstractRun.java,它们构成了一个简单的自动重启系统。这里,Test.java是主程序,Watch.java是用于监视和检测的线程,而AbstractRun.java可能包含...