Java 文本文件的不完整副本
这是我的输入文件:Java 文本文件的不完整副本,java,file,bufferedwriter,Java,File,Bufferedwriter,这是我的输入文件: This is a file test. please take notice of it. Peace. 这是输出: This is a file test. please take notice of 我不理解为什么它会停下来并“it.”,但它显示了“test”这个词。 代码如下: import java.io.*; import java.util.*; public class FileTest { public static void
This is a file test.
please take
notice of it.
Peace.
这是输出:
This is a file test.
please take
notice of
我不理解为什么它会停下来并“it.”,但它显示了“test”这个词。
代码如下:
import java.io.*;
import java.util.*;
public class FileTest {
public static void readFile() throws Throwable {
File _output = new File("output.txt");
FileWriter _filewr = new FileWriter(_output);
BufferedWriter _buffwrt = new BufferedWriter(_filewr);
FileInputStream f = new FileInputStream(
"C:\\Users\\Diana\\Desktop\\FileTest\\test.txt.txt");
BufferedReader _buffer = new BufferedReader(new InputStreamReader(f));
String _str = _buffer.readLine();
while (_str != null) {
String[] _vect = _str.split(" ");
int i;
for (i = 0; i < _vect.length; i++) {
if (_vect[i].contains(".")) {
_buffwrt.write(_vect[i] + " ");
break;
}
else
_buffwrt.write(_vect[i] + " ");
_buffwrt.flush();
}
_str = _buffer.readLine();
}
}
public static void main(String[] args) throws Throwable {
readFile();
}
import java.io.*;
导入java.util.*;
公共类文件测试{
public static void readFile()抛出可丢弃的{
文件_output=新文件(“output.txt”);
FileWriter _filewr=新的FileWriter(_输出);
BufferedWriter\u buffwrt=新的BufferedWriter(\u filewr);
FileInputStream f=新的FileInputStream(
“C:\\Users\\Diana\\Desktop\\FileTest\\test.txt”);
BufferedReader_buffer=新的BufferedReader(新的InputStreamReader(f));
字符串_str=_buffer.readLine();
while(_str!=null){
字符串[]向量=_str.split(“”);
int i;
对于(i=0;i<\u vect.length;i++){
if(_vect[i].包含(“.”){
_buffwrt.write(_-vect[i]+);
打破
}
其他的
_buffwrt.write(_-vect[i]+);
_buffwrt.flush();
}
_str=_buffer.readLine();
}
}
公共静态void main(字符串[]args)抛出可丢弃的{
readFile();
}
}使用另一个
\u buffwrt.flush()
在循环外刷新剩余的任何内容,不要忘记\u buffwrt.close()代码>在末尾
更新
@Svetlin Zarev提到了一个很好的观点,即只有\u buffwrt.close()末尾的代码>将足以刷新剩余的任何内容
使用另一个\u buffwrt.flush()
在循环外刷新剩余的任何内容,不要忘记\u buffwrt.close()代码>在末尾
更新
@Svetlin Zarev提到了一个很好的观点,即只有\u buffwrt.close()末尾的代码>将足以刷新剩余的任何内容
基本答案是,break
语句正在跳出循环,这是您想要的,但它也跳过了\u buffwrt.flush()代码>语句。由于没有正确关闭输出流,缓冲内容被丢弃
虽然您可以放入更多的flush
语句,但这有点违背了BufferedWriter
的目的,相反,您应该更好地管理资源,并确保在使用完资源后关闭它们,在这种情况下,这将在关闭资源之前刷新缓冲区
File _output = new File("output.txt");
try (BufferedWriter _buffwrt = new BufferedWriter(new FileWriter(_output))) {
try (BufferedReader _buffer = new BufferedReader(new FileReader("test.txt"))) {
String _str = _buffer.readLine();
while (_str != null) {
String[] _vect = _str.split(" ");
int i;
for (i = 0; i < _vect.length; i++) {
if (_vect[i].contains(".")) {
System.out.println("1 " + _vect[i]);
_buffwrt.write(_vect[i] + " ");
break;
} else {
System.out.println("2 " + _vect[i]);
_buffwrt.write(_vect[i] + " ");
}
}
_str = _buffer.readLine();
}
}
} catch (IOException exp) {
exp.printStackTrace();
}
File\u output=新文件(“output.txt”);
try(BufferedWriter\u buffwrt=new BufferedWriter(new FileWriter(\u output))){
try(BufferedReader\u buffer=new BufferedReader(new FileReader(“test.txt”)){
字符串_str=_buffer.readLine();
while(_str!=null){
字符串[]向量=_str.split(“”);
int i;
对于(i=0;i<\u vect.length;i++){
if(_vect[i].包含(“.”){
System.out.println(“1”+vect[i]);
_buffwrt.write(_-vect[i]+);
打破
}否则{
System.out.println(“2”+vect[i]);
_buffwrt.write(_-vect[i]+);
}
}
_str=_buffer.readLine();
}
}
}捕获(IOEXP异常){
exp.printStackTrace();
}
查看更多详细信息基本答案是,break
语句正在跳出循环,这是您想要的,但它也跳过了\u buffwrt.flush()代码>语句。由于没有正确关闭输出流,缓冲内容被丢弃
虽然您可以放入更多的flush
语句,但这有点违背了BufferedWriter
的目的,相反,您应该更好地管理资源,并确保在使用完资源后关闭它们,在这种情况下,这将在关闭资源之前刷新缓冲区
File _output = new File("output.txt");
try (BufferedWriter _buffwrt = new BufferedWriter(new FileWriter(_output))) {
try (BufferedReader _buffer = new BufferedReader(new FileReader("test.txt"))) {
String _str = _buffer.readLine();
while (_str != null) {
String[] _vect = _str.split(" ");
int i;
for (i = 0; i < _vect.length; i++) {
if (_vect[i].contains(".")) {
System.out.println("1 " + _vect[i]);
_buffwrt.write(_vect[i] + " ");
break;
} else {
System.out.println("2 " + _vect[i]);
_buffwrt.write(_vect[i] + " ");
}
}
_str = _buffer.readLine();
}
}
} catch (IOException exp) {
exp.printStackTrace();
}
File\u output=新文件(“output.txt”);
try(BufferedWriter\u buffwrt=new BufferedWriter(new FileWriter(\u output))){
try(BufferedReader\u buffer=new BufferedReader(new FileReader(“test.txt”)){
字符串_str=_buffer.readLine();
while(_str!=null){
字符串[]向量=_str.split(“”);
int i;
对于(i=0;i<\u vect.length;i++){
if(_vect[i].包含(“.”){
System.out.println(“1”+vect[i]);
_buffwrt.write(_-vect[i]+);
打破
}否则{
System.out.println(“2”+vect[i]);
_buffwrt.write(_-vect[i]+);
}
}
_str=_buffer.readLine();
}
}
}捕获(IOEXP异常){
exp.printStackTrace();
}
查看更多详细信息您在输出文件中看到了什么?整句话对吗?@almasshaikh是的,整段文字我都写在输入框里了。你的问题是什么?我相信你正在试图找到它为什么停在“it”上?还是别的?@almasshaikh是的,我正在试图弄清楚它为什么停在那里。您的文件包含多少行?您在输出文件中看到了什么?整句话对吗?@almasshaikh是的,整段文字我都写在输入框里了。你的问题是什么?我相信你正在试图找到它为什么停在“it”上?还是别的什么?@almasshaikh是的,我想弄清楚为什么它会停下来。你的文件到底包含多少行?谢谢,伙计,这真的很有效!下次我会记住你所说的关于刷新和关闭文件的内容。Close
将flush
写入程序的内容,因此不需要显式flush
。谢谢,伙计,这真的很有效!下次我会记住你说的关于刷新和关闭文件的内容。Close
将flush
写入程序的内容,因此不需要显式flush