[英]BufferedWriter writing random letters into file (Java)
出於某種原因,當我嘗試將一個名為 duration 的 int 寫入名為newSession
的文件並且程序已完成編譯並打開位於桌面上的文件時,所有其他文件都很好(意味着我想寫入的內容)文件已成功)但newSession
中寫入了隨機字母。 這是為什么,任何人都可以解釋為什么 int 持續時間沒有被寫入文件newSession
而是隨機字母。
package kappa;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Reader
{
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException, IOException
{
File dateFile = null;
Scanner reader = null;
try
{
String filePath = "/Users/john/Desktop/firstTime.txt";
Scanner reader2 = null;
while(true)
{
FileWriter fw = new FileWriter(filePath);
BufferedWriter bw = new BufferedWriter(fw);
File firstTime = new File(filePath);
firstTime.createNewFile();
bw.write("1");
bw.close();
reader2 = new Scanner(new File(filePath));
break;
}
if(reader2.nextInt() == 1)
{
dateFile = new File("/Users/john/Desktop/Kunja.txt");
dateFile.createNewFile();
reader = new Scanner(dateFile);
}
// if file doesnt exists, then create it
if (dateFile.exists())
{
FileWriter fw2 = new FileWriter(dateFile.getAbsoluteFile());
BufferedWriter bw2 = new BufferedWriter(fw2);
dateFile.createNewFile();
bw2.write("0");
bw2.close();
System.out.println("Done");
int duration;
String ans = JOptionPane.showInputDialog ("Enter the amount of problems per training session (with number in minutes):");
while(!ans.matches("[0-9]+"))
{
ans = JOptionPane.showInputDialog ("Please re-enter the amount of problems per training session (with number in minutes):" );
}
duration = Integer.parseInt(ans);
System.out.println("Duration is " + duration);
int numSessions = (reader.nextInt() + 1);
System.out.println("Number of sessions is: " + numSessions);
String fileName = ("sessionNumber"+numSessions);
File newSession = new File("/Users/john/Desktop/"+fileName);
System.out.println(fileName);
if (!newSession.exists())
{
newSession.createNewFile();
}
FileWriter fw3 = new FileWriter(newSession.getAbsoluteFile());
System.out.println("THE FILE PATH IS " + newSession.getAbsoluteFile());
BufferedWriter bw3 = new BufferedWriter(fw3);
bw3.write(duration);
bw3.close();
}else
{
int duration;
String ans = JOptionPane.showInputDialog ("Enter a number (only numbers please)");
while(!ans.matches("[0-9]+"))
{
ans = JOptionPane.showInputDialog ("Please re-enter a number (NOTHING ELSE!)" );
}
duration = Integer.parseInt(ans);
System.out.println(duration);
int numSessions = reader.nextInt();
System.out.println("Number of sessions is: " + numSessions);
String fileName = ("sessionNumber"+numSessions);
File newSession = new File("/Users/john/Desktop/"+fileName);
System.out.println(fileName);
if (!newSession.exists())
{
newSession.createNewFile();
System.out.println("IT DOES NOT EXIST!");
}
FileWriter fw = new FileWriter(newSession.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(duration);
bw.close();
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
BufferedWriter#write(int)
接受單個字符(由int
表示)。 如果要編寫整數的文本表示,則必須自己將其轉換為String
。
簡而言之,替換:
bw3.write(duration);
和:
String durationString = String.valueOf(duration);
bw3.write(durationString, 0, durationString.length());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.