当前位置: 代码迷 >> J2SE >> 小弟我想用IO库将转换代码风格
  详细解决方案

小弟我想用IO库将转换代码风格

热度:26   发布时间:2016-04-24 01:57:37.0
我想用IO库将转换代码风格
通过IO库将
Java code
public class Test{   public static void main(String[] args)   {      //Some statements   }}

改成
Java code
public class Test{   public static void main(String[] args){      //Some statements   }}

下面是我写的代码
Java code
package ex09;import java.io.*;import java.util.*;import javax.swing.JFileChooser;public class ex09_16 {    /**     * @param args     */    public static void main(String[] args) throws Exception{        // TODO 自动生成方法存根        JFileChooser fileChooser=new JFileChooser();        if(fileChooser.showOpenDialog(null)                ==JFileChooser.APPROVE_OPTION){            File sourceFile=fileChooser.getSelectedFile();                            Scanner input=new Scanner(sourceFile);            PrintWriter output=new PrintWriter(sourceFile);            while(input.hasNext()){                while(input.next().equals("{")){                    output.println("\r{");                }            }            input.close();            output.close();        }            }}

每次运行后我选的文件后就变为空,里面什么都没有了
不知道哪里不对

------解决方案--------------------
PrintWriter

public PrintWriter(File file)
throws FileNotFoundException
使用指定文件创建不具有自动行刷新的新 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者将使用此 Java 虚拟机实例的默认 charset 进行字符编码。
参数:
file - 作为此 writer 的目标使用的文件。如果存在该文件,则将其大小截取为零;否则,创建一个新文件。将输出写入文件中,并对其进行缓冲处理。
抛出:
FileNotFoundException - 如果给定的文件对象不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他一些错误
SecurityException - 如果存在安全管理器,并且 checkWrite(file.getPath()) 拒绝对文件进行写入访问。
从以下版本开始:
1.5

建议楼主多看API,文件内容清空的问题应该明白了。
所以格式化后的代码放到了当前目录下的同名文件中。
代码的逻辑好像也有问题,下面是我写的一段示例代码,楼主可以参考参考。
Java code
import java.io.*;import java.util.*;import javax.swing.JFileChooser;public class Main {    private static final String NONE = "NONE";//当读取的第二行没有时,设置为该字符串        public static void main(String[] args) throws Exception {        JFileChooser fileChooser = new JFileChooser();        if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {            File sourceFile = fileChooser.getSelectedFile();            Scanner input = new Scanner(sourceFile);            PrintWriter output = new PrintWriter(new File(sourceFile.getName()));                        //每次都去读两行(如果第二行没有的话,就设置为"NONE")            String first = "";//保存读取到的第一行            String second = "";//保存读取到的第二行            input.useDelimiter("\r\n");//设置分割符为换行。默认情况下该分隔符模式与空白匹配            while (input.hasNext()) {                first = input.next();//读取第一行                if(input.hasNext()) {//如果第二行存在的话,读取第二行                    second = input.next();                } else {//如果没有第二行,就设置为"NONE"                    second = NONE;                }                                //如果第二行为"{",就把第二行加到第一行后面写到文件中                if(second.trim().equals("{")) {                    output.println(first + second);                } else {//否则的话,先输出第一行,如果第二行存在的话,接着输出第二行                    output.println(first);                    if(!second.equals(NONE)) {                        output.println(second);                    }                }            }            input.close();            output.close();        }    }}
  相关解决方案