簡體   English   中英

BufferedWriter 將隨機字母寫入文件(Java)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM