Java:读取文件,然后在文本文件

时间:2015-07-19 20:57:31

标签: java file io readfile writefile

如何读取文件然后将数据写入java中的.txt文件?以下是我的代码。我正在读一个扩展名为.ivt的文件。 .ivt中有一些表,reset是一个描述所有数据的文本。我必须读取存储在文件中的文本,然后将其写在文本文件中。我能够获取数据并将其写在文本文件中。但是,当我打开文本文件并查看写入的内容时,我会看到许多随机符号和空格行。然后,几行将从英语转换为法语。我正在努力寻找为什么会这样。读取数据时是否会出现此问题?或者代码有问题吗?

package description;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;

public class FileDescription
{
    public static void main(String[] args)
    {
        // create variables
        ArrayList<String> fileLines = new ArrayList<>();
        String currLine;

        // create file
        File file = new File("E:\\Deep\\Personal Life\\Summer Education\\Grade 12 Physics\\Test\\Products.ivt");

        FileInputStream fis = null;
        BufferedReader br = null;

        try
        {
            fis = new FileInputStream(file);
            // construct buffered reader
            br = new BufferedReader(new InputStreamReader(fis));
        }
        catch (FileNotFoundException e)
        {
        }

        try
        {
            while((currLine = br.readLine()) != null)
            {
                // add line to the arrayList
                fileLines.add(currLine);
            }
        }
        catch (IOException e)
        {
        }
        finally 
        {
            // close buffered reader
            try
            {
                br.close();
            }
            catch (IOException e)
            {
            }
        }

        // write ArrayList on file
        PrintWriter pw = null;

        try
        {
            pw = new PrintWriter("E:\\Deep\\Personal Life\\Summer Education\\Grade 12 Physics\\Test\\ProductsO.txt");
        }
        catch (IOException e)
        {
        }

        for (int i = 0; i < fileLines.size(); i++)
        {
            pw.println(fileLines.get(i));
        }
    }
}

1 个答案:

答案 0 :(得分:1)

代码似乎是正确的。只记得关闭输出编写器。没有指定任何其他内容,您正在使用plaftorm编码。我认为这是一个编码问题。您可以尝试以UTF-8编码进行读写。

对于缓冲的阅读器

BufferedReader br = new BufferedReader(new InputStreamReader(
    new FileInputStream("filename.txt"), StandardCharsets.UTF_8));

对于作家

pstream = new PrintWriter(new OutputStreamWriter(
                    new FileOutputStream("E:\\Deep\\Personal Life\\Summer Education\\Grade 12 Physics\\Test\\ProductsO.txt"), StandardCharsets.UTF_8), true);

要编辑结果,请使用带有UTF-8的编辑器。

Reference 1 Reference 2