我正在尝试编写一个程序:
它还可以计算新文件的字数,并将其内容打印到终端。
但是我对那个新文件有两个问题:1-它只保存了我的adittion而没有旧文件的内容(即使我使用了. conat()方法)2-它不能计算那个新文件的单词。
除此之外,我还努力解决这些问题,但我无法。。。
package com;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
public class FileReader {
public static void main(String[] args) throws IOException {
Scanner scanTwo = new Scanner(System.in);
System.out.println("Please Enter Your File Path");
String filePath = scanTwo.nextLine();
File fileInput = new File(filePath);
Scanner fileScanner = new Scanner(fileInput);
System.out.println(fileScanner.nextLine());
System.out.println("Commands: PRINT.FILE --> Prints all file COUNT.WORDS --> Counts all words ADD.TO.FILE --> add to selected file");
System.out.println("Type Command:");
Scanner scan = new Scanner(System.in);
String printFileCommand = scan.nextLine();
if (printFileCommand.contains("PRINT.FILE")) {
while (fileScanner.hasNextLine()) {
System.out.println(fileScanner.nextLine());
}
} else if (printFileCommand.contains("COUNT.WORDS")) {
int wordCount = 0;
while (fileScanner.hasNext()) {
String fileWords = fileScanner.next();
wordCount++;
}
System.out.println(wordCount);
} else if (printFileCommand.contains("ADD.TO.FILE")) {
System.out.println("Please Enter Your new file path");
String newFilePath = scan.nextLine();
FileWriter addToFile = new FileWriter(newFilePath);
System.out.println("Please Enter Your Additions: ");
String newFileContent = scan.nextLine();
File newFileInput = new File(newFilePath);
Scanner newFileScanner = new Scanner(newFileInput);
while (newFileScanner.hasNextLine()) {
newFileContent = newFileContent.concat(newFileScanner.nextLine() + "\n");
}
addToFile.write(newFileContent);
addToFile.close();
System.out.println("Commands: PRINT.FILE --> Prints all file COUNT.WORDS --> Counts all words");
System.out.println("Please Enter Your Command:");
String newCommand = scan.nextLine();
if (newCommand.contains("PRINT.FILE")) {
while (newFileScanner.hasNextLine()) {
System.out.println(newFileScanner.nextLine());
}
} else if (newCommand.contains("COUNT.WORD")) {
int newWordCount = 0;
while (newFileScanner.hasNext()) {
String newFileWords = newFileScanner.next();
newWordCount++;
}
System.out.println(newWordCount);
} else {
System.out.println("COMMAND INVALID!");
}
addToFile.close();
// newFileScanner.close();
}
else {
System.out.println("COMMAND INVALID!");
}
scanTwo.close();
fileScanner.close();
scan.close();
}
}
是否确实打开旧文件以进行读取和连接?我看到您通过新文件路径打开新文件,而此文件为空,这是您的代码:
File newFileInput = new File(newFilePath);
Scanner newFileScanner = new Scanner(newFileInput);
while (newFileScanner.hasNextLine()) {
newFileContent = newFileContent.concat(newFileScanner.nextLine() + "\n");
}
此外,如果您已经使用Scanner
读取文件,则需要创建新的Scanner
实例(重置. nextLine()Scanner)
我试图重写并为页脚返回不同的视图类型,但在函数中进行整数比较失败: 此图像显示了一个调试会话,其中输入为21,私有列表的大小为21,但是当我按下“step over”时,会跳过条件代码。 如果两个整数相等,为什么返回false? 我在运行之前清理并重建了我的项目。 更新: 当整数被硬编码时,它可以工作: 这是完整的适配器:https://gist.github.com/fergusom/79C6D
问题内容: 我知道如何按字节读取文件,但是找不到如何按字节读取文件的示例。我有一个字节数组,我想读取512bytes的文件并通过套接字发送它们。 我尝试读取文件的总字节,然后减去512字节,直到得到小于512字节的块,并发出EOF和传输结束的信号。 我正在尝试实现TFTP,其中以512字节块发送数据。 无论如何,我们将为一个例子而感激。 问题答案: 您…一次读取512个字节。
问题内容: 我想读取不同块的日志文件,以使其成为多线程。该应用程序将在具有多个硬盘的服务器端环境中运行。读取成块后,应用程序将处理每个块的每一行。 我已经用bufferedreader完成了对每个文件行的读取,并且可以通过将RandomAccessFile与MappedByteBuffer结合使用来制作文件块,但是将这两者结合起来并不容易。 问题在于该块正好切入我块的最后一行。我从来没有块的最后一
我有一个名为“add”的方法,它将字符串作为参数,并使用bufferedwriter将其写入文件。完成此操作后,bufferedwriter将被刷新。 在另一个方法“read”中,我遍历文件中的行,但这些行是空的(因此我不能打印它们)。
我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它
当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。