2011-09-09 41 views

Trả lời

19

Bạn phải viết chuỗi ...

bạn có thể thử.

wr.write("123"); 

HOẶC

wr.write(new Integer(123).toString()); 

HOẶC

wr.write(String.valueOf(123)); 
+0

Tại sao tôi phải làm cho int 123 một o loại bject của Integer? Java đã biết rằng đây là một giá trị int và do đó sẽ có thể dịch đó vào chuỗi? Whats sự khác biệt giữa Obj. của Integer và datatype của int? –

+2

@AshwinGupta và bất kỳ ai khác tự hỏi, đó là vì phương thức 'wr.write (int)' không thực sự viết int, nó viết ký tự được biểu diễn bằng 'int' trong mã hóa được chỉ định (utf-8 nếu không được chỉ định). Vì vậy, các int được ánh xạ tới các ký tự khác, làm cho nó trở thành một đối tượng và nhận được chuỗi của nó buộc nó để viết số nguyên thực xuống, khác autoboxing hoặc unboxing sẽ chuyển nó trở lại một int nguyên thủy. Xem: https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html#write(int) – matrixanomaly

3

123 = 0x7b = ascii mã cho {, vì vậy bạn đang viết các nhân vật để các tập tin. Sử dụng phương thức toString() để chuyển đổi giá trị thành chuỗi và xuất nó.

2

Vấn đề là Writer.write được sử dụng để gửi một ký tự đơn cho đầu ra. Đó là chưa rõ lý do tại sao nó int hơn char, phải thừa nhận là - nó sẽ có ý nghĩa nếu bạn có thể sử dụng để gửi các ký tự không BMP, nhưng documentation trạng thái:

Viết một nhân vật duy nhất. Ký tự được ghi được chứa trong 16 bit có thứ tự thấp của giá trị số nguyên đã cho; 16 bit thứ tự cao được bỏ qua.

Trước tiên, bạn cần chuyển đổi số nguyên thành chuỗi.

int v = 123; // I'm assuming this is dynamic in reality 
wr.write(String.valueOf(v)); 
3

Javadocs là bạn của bạn:

lớp Thuận tiện cho việc viết các file nhân vật.

} là nhân vật có giá trị ASCII 123.

Nếu bạn muốn viết các đại diện văn bản của 123 đến tập tin này, bạn muốn làm:

wr.write(Integer.toString(123)); 
1

Tuy nhiên, một phương pháp:

wr.write(""+123); //immediately convert int to its String representation 

hoặc

wr.write(""+i); 

Nhưng tôi không biết, nó ảnh hưởng như thế nào sự khác biệt so với các phương pháp khác, nhưng nó đơn giản hơn một chút để viết. :)

PS: Xin lỗi vì tôi có thể là xấu tiếng Anh

4

Ngoài ra còn có một cách rất đơn giản để viết các số nguyên để nộp sử dụng FileWriter:

Writer wr = new FileWriter("123.txt"); 
wr.write(123 + ""); 
wr.close(); 

Các + "" concatenates các số nguyên với một chuỗi rỗng, do đó phân tích cú pháp số nguyên thành chuỗi. Rất dễ làm và nhớ.

+0

Giúp tôi rất nhiều. Cảm ơn. – SpiderRico

2

Tôi đã có trải nghiệm tốt trong quá khứ với PrintStream. PrintStream thể được sử dụng theo hai cách (ít nhất)

PrintStream ps = new PrintStream("file_location.txt"); 

HOẶC

PrintStream ps = new PrintStream(new File("file_loc.txt")); 

và viết, sử dụng:

ps.println("String text"); 

HOẶC

ps.println(Integer.parseInt(123)); 
Các vấn đề liên quan