Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文本文件的不完整副本_Java_File_Bufferedwriter - Fatal编程技术网

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