Java: чтение файла, а затем запись данных в текстовый файл

Как прочитать файл, а затем записать данные в файл .txt в java? Ниже мой код. Я читаю файл с расширением .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));
        }
    }
}

person Deep    schedule 19.07.2015    source источник


Ответы (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.

Ссылка 1 Ссылка 2

person xcesco    schedule 19.07.2015
comment
Я тоже думаю, что проблема с кодировкой. Я понял, как вы упомянули кодировку при чтении файла, но не могли бы вы объяснить мне, как выполняется кодирование записи? Меня смущает часть - csocket.getOutputStream(). Кроме того, как я могу указать имя файла для записи? - person Deep; 20.07.2015