Java 如何读取到文本文件
我需要输出到一个txt文件。。我可以输出我的单词,但不能输出我的BST。我正在尝试将我的二叉树按顺序、前顺序和后顺序输出到我的txt文件中。我该怎么做??我的代码如下:Java 如何读取到文本文件,java,binary-search-tree,Java,Binary Search Tree,我需要输出到一个txt文件。。我可以输出我的单词,但不能输出我的BST。我正在尝试将我的二叉树按顺序、前顺序和后顺序输出到我的txt文件中。我该怎么做??我的代码如下: import java.io.FileReader; import java.io.FileOutputStream; import java.io.PrintStream; import java.io.FileNotFoundException; public class Project3 { public Nod
import java.io.FileReader;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.FileNotFoundException;
public class Project3 {
public Node root;
public Project3 insert(int number) {
Node node = new Node(number);
if (root == null) {
root = node;
return this;
}
insertValue(root, node);
return this;
}
public class Node {
public int number;
public Node left;
public Node right;
public Node(int number) {
this.number = number;
}
}
private void insertValue(Node newRoot, Node node) {
if (newRoot.number > node.number) {
if (newRoot.left == null) {
newRoot.left = node;
return;
} else {
insertValue(newRoot.left, node);
}
} else {
if (newRoot.right == null) {
newRoot.right = node;
return;
} else {
insertValue(newRoot.right, node);
}
}
}
public void printInorder() {
printInOrderImplem(root);
System.out.println("");
}
public void printPreorder() {
PreOrderImplem(root);
System.out.println("");
}
public void printPostorder() {
printPostOrderImplem(root);
System.out.println("");
}
private void printInOrderImplem(Node currRoot) {
if (currRoot == null) {
return;
}
printInOrderImplem(currRoot.left);
System.out.print(currRoot.number + ", ");
printInOrderImplem(currRoot.right);
}
private void PreOrderImplem(Node currRoot) {
if (currRoot == null) {
return;
}
System.out.print(currRoot.number + ", ");
PreOrderImplem(currRoot.left);
PreOrderImplem(currRoot.right);
}
private void printPostOrderImplem(Node currRoot) {
if (currRoot == null) {
return;
}
printPostOrderImplem(currRoot.left);
printPostOrderImplem(currRoot.right);
System.out.print(currRoot.number + ", ");
}
public static void main(String[] args) throws FileNotFoundException {
PrintStream out = new PrintStream(new FileOutputStream("/Users/Desktop/output.txt"));
Project3 BST = new Project3();
// numbers to insert 14, 15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
BST.insert(14);
BST.insert(15);
BST.insert(4);
BST.insert(9);
BST.insert(7);
BST.insert(18);
BST.insert(3);
BST.insert(5);
BST.insert(16);
BST.insert(4);
BST.insert(20);
BST.insert(17);
BST.insert(9);
BST.insert(14);
BST.insert(5);
System.out.println("Inorder traversal is- ");
out.println("Inorder traversal is- ");
BST.printInorder();
System.out.println("Preorder traversal is- ");
out.println("Preorder Traversal is- ");
BST.printPreorder();
System.out.println("Postorder traversal is- ");
out.println("Postorder Traversal is- ");
BST.printPostorder();
}
}
下面是一个如何写入txt文件的示例
import java.io.PrintWriter;
try {
PrintWriter writer = new PrintWriter("example.txt");
writer.print("stuff in my .txt");
writer.println();
writer.close();
} catch(IOException e) {
}
请注意.txt(或您编写的任何文件)将与.java位于同一目录中。如果希望它位于其他目录中,则必须在文件名之前输入目录。(即“filename/example.txt”)下面是一个如何写入txt文件的示例
import java.io.PrintWriter;
try {
PrintWriter writer = new PrintWriter("example.txt");
writer.print("stuff in my .txt");
writer.println();
writer.close();
} catch(IOException e) {
}
请注意.txt(或您编写的任何文件)将与.java位于同一目录中。如果希望它位于其他目录中,则必须在文件名之前输入目录。(即“filename/example.txt”)您的printXorder()
方法总是打印到System.out
,因此您永远不会在磁盘上的文件中看到这一点。你有几个选择,我将解释主要的两个:
- 不要实现
方法,而是使用printXorder()
,它返回一个toStringXorder()
字符串,然后可以将该字符串打印到您喜欢的任何流中。如果执行此操作,则应在
构造阶段使用String
(或者StringBuilder
,如果代码是可重入的),并仅在最后一步将其转换为StringBuffer
。另外,String
允许您轻松删除实现中最后一个讨厌的逗号(如果您选择删除逗号,请小心StringBuilder
ing空树)toString
- 让您的
方法获取printXorder()
参数,并使它们打印到该PrintStream
PrintStream
字符串将导致内存中出现问题),您将需要第二个。您的printXorder()
方法总是打印到System.out
,因此您永远不会在磁盘上的文件中看到它。你有几个选择,我将解释主要的两个:
- 不要实现
printXorder()
方法,而是使用toStringXorder()
,它返回一个字符串,然后可以将该字符串打印到您喜欢的任何流中。如果执行此操作,则应在String
构造阶段使用StringBuilder
(或者StringBuffer
,如果代码是可重入的),并仅在最后一步将其转换为String
。另外,StringBuilder
允许您轻松删除实现中最后一个讨厌的逗号(如果您选择删除逗号,请小心toString
ing空树)
- 让您的
printXorder()
方法获取PrintStream
参数,并使它们打印到该PrintStream
如果您的树不会长得太多,那么第一种解决方案是可以的(通常更灵活)。如果树可能变得非常大(因此生成的字符串
将导致内存中出现问题),则需要第二个