Я студент java, и этот пример из учебника. Проблема, с которой я столкнулась, это line.separator, не помещая запись на следующей строке. Результат, на самом деле, это то, что он делает. Он помещает записи в одну строку. Книга показывает выход так, как он должен быть. Я копирую и вставляю код в Eclipse и Notepad и запускаю его. Я получаю тот же результат в обоих направлениях. Спасибо заранее за любую помощь.Ошибка System.getProperty (line.separator)
import java.nio.file.*;
import java.io.*;
import java.nio.channels.FileChannel;
import java.nio.ByteBuffer;
import static java.nio.file.StandardOpenOption.*;
import java.util.Scanner;
public class CreateEmployeesRandomFile {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Path file = Paths.get("C:\\EJava\\Employee.txt");
String s = "000, ,00.00" + System.getProperty("line.separator");
final int RECSIZE = s.length();
FileChannel fc = null;
String delimiter = ",";
String idString;
int id;
String name;
String payRate;
final String QUIT = "999";
try {
fc = (FileChannel) Files.newByteChannel(file, CREATE, WRITE);
System.out.print("Enter employee ID number >> ");
idString = input.nextLine();
while (!(idString.equals(QUIT))) {
id = Integer.parseInt(idString);
System.out.print("Enter name for employee #" + id + " >> ");
name = input.nextLine();
System.out.print("Enter pay rate >> ");
payRate = input.nextLine();
s = idString + delimiter + name + delimiter + payRate
+ System.getProperty("line.separator");
byte[] data = s.getBytes();
ByteBuffer buffer = ByteBuffer.wrap(data);
fc.position(id * RECSIZE);
fc.write(buffer);
System.out.print("Enter next ID number or " + QUIT
+ " to quit >> ");
idString = input.nextLine();
}
fc.close();
} catch (Exception e) {
System.out.println("Error message: " + e);
}
}
}
Результат: 000,, 00,00 001, Грег Look002, Джон Smit003, Фред Кремень, 2541,02
000,, 00,00 000,, 00,00 т.д.
изменил его, и это не исправить. – Blazto
Это зависит от ОС. Разделитель строк есть; возможно, проблема связана с программой, которую вы используете для просмотра текста: Windows Notepad. Каждая другая программа в мире будет принимать любой из трех наиболее распространенных разделителей строк: «\ n» (только для перевода строки), «\ r» (только возврат каретки) или «\ r \ n» (возврат каретки + перевод строки). Но «Блокнот» распознает только «\ r \ n», традиционный разделитель строк для систем DOS/Windows. Попробуйте использовать что-то другое, кроме Блокнота, чтобы просмотреть текст и посмотреть, работает ли он. –
Я пробовал на NotePad ++ и Eclipse. – Blazto