结合两个文本文件的Java
我有一个Java类的作业,要求我组合两个文本文件 这是我到目前为止的代码结合两个文本文件的Java,java,Java,我有一个Java类的作业,要求我组合两个文本文件 这是我到目前为止的代码 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; public class CombineTwoFile { public
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class CombineTwoFile {
public static void main(String[] args) throws IOException
{
ArrayList<String> list = new ArrayList<String>();
try
{
BufferedReader br = new BufferedReader(new FileReader( "A.txt"));
BufferedReader r = new BufferedReader(new FileReader( "B.txt"));
String s1 =null;
String s2 = null;
while ((s1 = br.readLine()) != null)
{
list.add(s1);
}
while((s2 = r.readLine()) != null)
{
list.add(s2);
}
}
catch (IOException e)
{
e.printStackTrace();
}
BufferedWriter writer=null;
writer = new BufferedWriter(new FileWriter("B.txt"));
String listWord;
for (int i = 0; i< list.size(); i++)
{
listWord = list.get(i);
writer.write(listWord);
writer.write("\n");
}
System.out.println("completed");
writer.close();
}
}
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.ArrayList;
公共类组合文件{
公共静态void main(字符串[]args)引发IOException
{
ArrayList=新建ArrayList();
尝试
{
BufferedReader br=新的BufferedReader(新文件读取器(“A.txt”);
BufferedReader r=新的BufferedReader(新文件读取器(“B.txt”);
字符串s1=null;
字符串s2=null;
而((s1=br.readLine())!=null)
{
列表。添加(s1);
}
而((s2=r.readLine())!=null)
{
列表。添加(s2);
}
}
捕获(IOE异常)
{
e、 printStackTrace();
}
BufferedWriter=null;
writer=newbufferedwriter(newfilewriter(“B.txt”);
字符串列表字;
对于(int i=0;i
现在,当我编译它时,我收到了这个消息
java.io.FileNotFoundException: A.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at java.io.FileReader.<init>(FileReader.java:41)
at CombineTwoFile.main(CombineTwoFile.java:15)
completed
java.io.FileNotFoundException:A.txt(没有这样的文件或目录)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:120)
位于java.io.FileInputStream。(FileInputStream.java:79)
位于java.io.FileReader。(FileReader.java:41)
位于CombineTwoFile.main(CombineTwoFile.java:15)
完整的
我在苹果电脑上使用Coderunner,我想也许将文本文件写为“C:/Users/dell/Desktop/Test/input1.txt”可以解决这个问题,但我不确定如何将其写入硬盘。谢谢你看,我感谢你的帮助 您的Java程序在所需位置找不到“A.txt”,若要知道将文件放在何处,您可以使用
system.getproperty(user.dir)
了解系统在何处查找文件。另一种方法是,您可以在新文件('c:\\something\\A.txt')中写入绝对路径代码>
希望对你有帮助,卢卡斯,你的程序绝对正确。您不需要更正任何内容,只需手动创建一个文件“a.txt”,然后再次运行此代码。这里有几个地方可以改进
首先,正如其他人所指出的,您需要指定文件的正确路径,您这样做的方式假设文件在类路径中,而显然不是
可以指定绝对路径,也可以指定与类比较的相对路径
如果你想保持原样,你需要把文件放在类路径中(你的类运行的地方)
有关绝对路径
和相对路径
的更多信息,请参见此:
除此之外,您不应该从main
抛出异常,而是应该处理它
我还建议您使用新的尝试使用资源
示例:
try(BufferedReader bf = new BufferedReader(new FileReader( "C:\\Users\\...\\A.txt"));){
//do something
} catch(IOException e){
//handle
}
//no need to close the streams, the jgc will handle that for you
这将在try块内为您关闭使用完的流
如果您的老师(正如您在一条评论中添加的)希望您能够动态选择路径,您需要从控制台输入该路径,并将其用作绝对路径
Scanner s = new Scanner(System.in);
String path = s.readLine(); //use this as absolute path
如果需要从GUI
执行此操作,则需要JFileChooser
就写作而言,同样的建议也适用
您还可以通过使用一个字符串来避免写入第+“\n”行。
它将提供一个println(strings)方法,即自动刷新,出于可移植性的原因,它会更好
作为一个小提示,在这种情况下,您实际上不需要s2
,再次使用s1
就可以了
System.out.println(新文件(“A.txt”).getCanonicalPath())代码>
以前
BufferedReader br = new BufferedReader(new FileReader( "A.txt"));
BufferedReader r = new BufferedReader(new FileReader( "B.txt"));
您将获得异常信息之前的确切路径,如:
C:\Users\PiyushMittal\Downloads\Java-mongodb-hello-world-example\mongodb\A.txt
java.io.FileNotFoundException: A.txt (The system cannot find the file specified)
completed at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at com.mkyong.core.CombineTwoFile.main(CombineTwoFile.java:19)
C:\Users\piyushittal\Downloads\Java mongodb hello world example\mongodb\A.txt
java.io.FileNotFoundException:A.txt(系统找不到指定的文件)
在java.io.FileInputStream.open0(本机方法)中完成
在java.io.FileInputStream.open(FileInputStream.java:195)
位于java.io.FileInputStream。(FileInputStream.java:138)
位于java.io.FileInputStream。(FileInputStream.java:93)
位于java.io.FileReader。(FileReader.java:58)
位于com.mkyong.core.CombineTowile.main(CombineTowile.java:19)
第一行是您必须放置文件的地方:)您需要文件的完整路径newfilereader(“A.txt”)
将尝试从类路径读取文件。文件A.txt
不存在或位置错误。您可以通过记录以下值来找到文件的放置位置:newfile(“A.txt”).getCanonicalPath()
。只需将A.txt文件添加到目录中,并在新的FileReader(“A.txt”)中,而不是只传递“A.txt”,将完整路径作为参数传递给A.txt文件。例如,如果您将文件A.txt放在C驱动器的临时文件夹中。现在在课堂上你将以参数C:\\temp\\A.txt.Im的形式通过,我的教授说不要包含到绝对路径,因为她将把所有文件放在一个文件夹中并测试它。还有其他可能的解决办法吗?或者,是否有一个简单的解决方案“将txt文件放置在所需的位置?”不太清楚它的位置。我还尝试在编码应用程序use System.out.println(System.getproperty(user.dir))中打开txt文件;要查看工作目录,请将文本文件放在与java文件相同的位置,文件地址类似于“system.get”