将用户输入文本复制到输出文本文件(java)
这是我的java类的一个助手。我必须创建用户输入并将其放入输入文件(InputFile.txt),然后通过输出文件(OutPutFile.txt)提交此文本。问题和示例文本如下: 编写一个程序,打开一个文本文件(InputFile.txt)并读取输入。该文件包含如下所示的字符串行:将用户输入文本复制到输出文本文件(java),java,file,oop,object,io,Java,File,Oop,Object,Io,这是我的java类的一个助手。我必须创建用户输入并将其放入输入文件(InputFile.txt),然后通过输出文件(OutPutFile.txt)提交此文本。问题和示例文本如下: 编写一个程序,打开一个文本文件(InputFile.txt)并读取输入。该文件包含如下所示的字符串行: import java.util.Scanner; import java.io.*; public class Main { public static void main(String[] args)
import java.util.Scanner;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException
{
File inputFile = new File("InputFile.txt");
File outputFile = new File("OutputFile.txt");
Scanner inFS = new Scanner(inputFile);
PrintWriter outFS = new PrintWriter(outputFile);
String line;
while (inFS.hasNextLine())
{
// Read in the line and convert it to upper case
line = inFS.nextLine().toUpperCase();
// Print the result to the console
System.out.println(line);
// Write the read in line to the output file with a new line character
outFS.print(line + "\n");
}
// Close any resources used
outFS.close();
inFS.close();
}
}
这是一号线
这是第二行
这是第三行
这是四号线
将输入字符串更改为大写(“这是第一行”),将大写行写入OutputFile.txt。确保读取输入文件中的所有行
我几乎把所有的东西都记下来了,除了把文本放到输出中,然后它就出现了。下面是我的代码以及我不断得到的结果。我知道我在什么地方搞砸了,我只是不知道在哪里
任何帮助/建议都会大有帮助。谢谢
import java.util.Scanner;
import java.util.io.*;
public class Main {
public static void main(String[] args) throws IOException {
FileInputStream fileByteStream = null;
Scaner inFS = null;
String InputFile;
fileByteStream = new FileInputStream("InputFile.txt");
inFS = new Scanner(fileByteStream);
while (inFS.hasNextLine()) {
System.out.println(inFS.nextLine());
}
fileByteStream.close();
FileOutputStream fileStream = new FileOutputStream("OutputFile.txt");
PrintWriter outFS = new PrintWriter(fileStream);
outFS.print(inFS);
outFS.close();
}
}
结果:
java.util.Scanner[delimiters=\p{javaWhitespace}+][position=77][match valid=false][need input=false][source closed=true][skipped=false][group separator=\,][decimal separator=\.][positive prefix=\Q-\E][positive suffix=][负后缀=][NaN NaN string=\QNaN E][infinity string=\Q∞\E]
好的,首先,Java中没有名为“Java.util.io”的库。你可能正在寻找的是
代码中的另一个问题是,您拼错了扫描仪对象名称,不确定这是否是在您发布问题时偶然发生的,但正确的语法是:
Scanner inFS = null;
关于您为什么会收到:
Scanner[delimiters=\p{javaWhitespace}+][position=77][match
valid=false][need input=false][source
closed=true][skipped=false][group separator=\,][decimal
分隔符=.][正前缀=][负前缀=\Q-\E][正
后缀=][负后缀=][NaN字符串=\QNaN\E][无限字符串=\Q∞\[英]
这是因为您正在将扫描仪对象传递给PrintWriter。实际上,您并没有打印扫描仪读入的行,而是打印扫描仪从其toString()方法返回的字符串内容
无论如何,为了将文本放入输出,需要一个指向输出文件的File对象和一个指向输出文件的File对象的PrintWriter。使其工作的总体思路是让PrintWriter对象在程序通过扫描仪读取InputFile.txt中的行时写入OutputFile.txt。因此,您的代码应该如下所示:
import java.util.Scanner;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException
{
File inputFile = new File("InputFile.txt");
File outputFile = new File("OutputFile.txt");
Scanner inFS = new Scanner(inputFile);
PrintWriter outFS = new PrintWriter(outputFile);
String line;
while (inFS.hasNextLine())
{
// Read in the line and convert it to upper case
line = inFS.nextLine().toUpperCase();
// Print the result to the console
System.out.println(line);
// Write the read in line to the output file with a new line character
outFS.print(line + "\n");
}
// Close any resources used
outFS.close();
inFS.close();
}
}
您的代码不应编译。您的扫描仪不正确,并且大多数类不属于java.util.io包对此表示担忧。我已经做了几个小时这个问题,我甚至没有意识到我所有的错误。我把这件事搞砸了。谢谢你的澄清。我不喜欢这本书。指示不太清楚。我花了一天半的时间解析Java文档。谢谢Darian。我真的应该检查一下我的语法。你对我的解释非常正确,而且很容易让我理解。除了我的代码很难看之外,我还看到了你在说什么。我至少在正确的轨道上还是完全偏离了?你实际上在正确的轨道上。尽管有一点拼写错误/库名错误,但您仍然清楚地知道要实现这一点需要哪些库/对象。从技术上讲,您可以使用FileInputStream/FileOutputSteam来代替文件,但是,这些输入/输出流更多地用于写入/读取原始字节流,例如图像数据。