我正在尝试执行此任务:
编写一个读取文件的程序,并将该文件的副本写入另一个插入行号的文件中。
到目前为止,我已经写了很多代码:
import java.io.*;
import java.util.Scanner;
public class Question43
{
public static void main(String[] args) throws IOException
{
Scanner fileIn = new Scanner(new File("Assign4.txt") );
FileWriter fileOut = new FileWriter("FileOut.txt");
PrintWriter output = new PrintWriter(fileOut);
String []array = new String[10];
int indx = 0;
while(fileIn.hasNext( ) )
{
array[indx] = fileIn.nextLine( );
}
fileIn.close();
int num = 1;
for(int i =0; i < array.length; i++)
{
output.println(num+"\t"+array[i]);
}
}
}
当我点击运行时,我收到此错误:
Exception in thread "main" java.io.FileNotFoundException: Assign4.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.util.Scanner.<init>(Unknown Source)
at Question43.main(Question43.java:8)
有人可以告诉我该怎么办?我应该在哪里放置名为Assign4的文本文件,以便Eclipse IDE可以读取它?此外,新文件将在何处创建?
感谢您的帮助!
答案 0 :(得分:0)
在Eclipse中,程序从顶级目录运行,即源文件夹和bin文件夹所在的位置。如果有疑问,请尝试
System.out.println((new java.io.File(".")).getAbsolutePath());
将打印出运行该程序的目录的路径。
你还需要记得在使用它之后关闭你的编写器,以确保你写的内容被刷新 - 编写器可能缓冲你写的内容,如果你的程序在刷新缓冲区之前完成,那么你写的是什么迷路了。所以在程序结束时关闭你的作家,即
import java.io.*;
import java.util.Scanner;
public class Question43
{
public static void main(String[] args) throws IOException
{
Scanner fileIn = new Scanner(new File("Assign4.txt") );
FileWriter fileOut = new FileWriter("FileOut.txt");
PrintWriter output = new PrintWriter(fileOut);
String []array = new String[10];
int indx = 0;
while(fileIn.hasNext( ) )
{
array[indx] = fileIn.nextLine( );
}
fileIn.close();
int num = 1;
for(int i =0; i < array.length; i++)
{
output.println(num+"\t"+array[i]);
}
output.close();
}
}
另一条评论 - 你假设你的文件正好有10行。为了更灵活地尝试使用按需增长的数据结构,例如ArrayList
。此外,您似乎没有在循环中递增num - 因此您的行将全部编号为1。
import java.io.*;
import java.util.*;
public class Question43
{
public static void main(String[] args) throws IOException
{
Scanner fileIn = new Scanner(new File("Assign4.txt") );
FileWriter fileOut = new FileWriter("FileOut.txt");
PrintWriter output = new PrintWriter(fileOut);
List<String> list = new ArrayList<String>();
while(fileIn.hasNext( ) )
{
list.add(fileIn.nextLine( ));
}
fileIn.close();
int num = 1;
for(String line : list)
{
output.println(num+"\t"+line);
num++;
}
output.close();
}
}
最后,您根本不需要数据结构,因为您可以在读取输入文件时写入输出文件,即
import java.io.*;
import java.util.Scanner;
public class Question43
{
public static void main(String[] args) throws IOException
{
Scanner fileIn = new Scanner(new File("Assign4.txt") );
FileWriter fileOut = new FileWriter("FileOut.txt");
PrintWriter output = new PrintWriter(fileOut);
int num = 1;
while(fileIn.hasNext( ) )
{
String line = fileIn.nextLine( );
output.println(num+"\t"+line);
num++;
}
fileIn.close();
output.close();
}
}
答案 1 :(得分:0)
请指定Assign4.txt文件的路径。扫描仪无法找到您指定的路径。指定项目根目录的路径