У меня есть программа, в которой я использую цикл while для печати как на консоль, так и на html-файл. Однако, несмотря на то, что он печатает на консоли, программа будет выводить только окончательную строку в html-файл. Вот код для моего цикла, который, как предполагается печатать информацию, извлеченную из текстового файла для линий 9 до 16.while цикл только один раз, а не для всего цикла
//read the txt file
Path objPath = Paths.get("dirsize.txt");
if (Files.exists(objPath))
{
File objFile = objPath.toFile();
try(BufferedReader in = new BufferedReader(
new FileReader(objFile)))
{
String line = in.readLine();
int lineNum = 1;
//extract the month
String monthSubstring = line.substring(25,27);
month = Integer.parseInt(monthSubstring) -1 ;
//extact the year
String yearSubstring = line.substring(31,35);
year = (Integer.parseInt(yearSubstring));
//extract the date
String daySubstring = line.substring(28,30);
day = Integer.parseInt(daySubstring);
PrintWriter out = new PrintWriter (new BufferedWriter(new FileWriter("Output.html")));
while(line != null)
{
line = in.readLine();
lineNum ++;
if (lineNum == 3)
{
//extract the hour
String hourSubstring = line.substring(21,23);
hour = Integer.parseInt(hourSubstring);
//extract the minute
String minuteSubstring = line.substring(24,26);
minute = Integer.parseInt(minuteSubstring);
//extract the second
String secondSubstring = line.substring(27,29);
second= Integer.parseInt(secondSubstring);
}
if(lineNum ==5)
{
//Extract the branch
strBranch = line.substring(22, 27);
}
if (lineNum == 6)
{
//Extract the computer
strCPU = line.substring(26,32);
}
if (lineNum >= 9 && lineNum <= 16)
{
//call the MyDirectory methods to get the files name,size and number of files
MyDirectory directory = new MyDirectory(line);
fileName = directory.getName();
fileSize = directory.getsize();
fileNum = directory.getNum();
//create the dteDate calender
GregorianCalendar dteDate = new GregorianCalendar(year, month, day, hour, minute, second);
//fromat the date
SimpleDateFormat strDate = new SimpleDateFormat("MMM dd, yyyy h:m");
//Write the data to the file
out.println((strBranch + "; " +
strCPU + "; " +
strDate.format(dteDate.getTime())) + "; " +
fileName + "; " +
fileSize + "; " +
fileNum);
//create the necessary output for the console
System.out.println((strBranch + "; " +
strCPU + "; " +
strDate.format(dteDate.getTime())) + "; " +
fileName + "; " +
fileSize + "; " +
fileNum);
}
out.flush();
}
}
//catch any IOExceptions and print out e
catch (IOException e)
{
System.out.println(e);
}
}
EDIT: Через совет отправил в ответах теперь у меня есть свой выход на все, но им с жесткое форматирование времени, в html-файле есть все строки вместе без пробелов, которые я пробовал с помощью «\ n» в конце моего вывода, но тогда мой код не компилируется, потому что он говорит, что null не разрешено там, кто-нибудь знает, как форматируйте это в строки, когда он не позволит мне положить «\ n» в конце моего метода печати?
Я не уверен, что это много кода или недостаточно для решения проблемы, и если я должен что-то добавить к своему сообщению или что-нибудь сделать, просто дайте мне знать.
Возможно, я осуществил это неправильно, но это не исправило мою проблему. Я обновляю свой код в своем исходном сообщении, чтобы вы могли видеть, как я это сделал. –
hmm now im ничего не получаю в html-файле, он полностью пуст. мой код, чтобы показать, какая часть меня изменила, так как я мог ошибиться –
Я перенес операцию закрытия после второй} после окончания цикла, но теперь мой html-файл пуст и не получает никаких данных из моего метода печати –