2017-01-16 4 views
0

.txtファイルから読み込むと、.txtファイルの別のコピーが作成され、名前に ".txt"が追加されます。テキストファイルから別のファイルを作成する

例:「hello.txt」から読み込み、「hello.txt.txt」を作成します。問題は、FileWriter flwrtr = new FileWriter(fl.getPath()+".txt");を含む行ですが、文字列を削除しても誰も知りません解決策?

String path=""; 

    JFileChooser fileopenchooser = new JFileChooser(); 
    fileopenchooser.setDialogTitle("Open Quiz"); 
    FileNameExtensionFilter filter = new FileNameExtensionFilter("Text File", "txt"); 
    fileopenchooser.setFileFilter(filter); 

    int getvlue = fileopenchooser.showOpenDialog(fileopenchooser); 
    if(getvlue == JFileChooser.APPROVE_OPTION){ 

     File fl = fileopenchooser.getSelectedFile(); 
     try{ 

     FileWriter flwrtr = new FileWriter(fl.getPath()+".txt"); 
     path = fl.getPath(); 
     flwrtr.close(); 

     } 
     catch(Exception e){ 
     JOptionPane.showMessageDialog(null,"Problem Saving File!","ERROR",JOptionPane.WARNING_MESSAGE); 
     } 
+0

部分文字列を使用できます。これはCですよね?それはそれがどのように見えるかです。私はCで文字列インデックスを使うことができると思います。 'str [0:4]' –

答えて

1

これは、Javaではなく、あなたは新しいしてFileWriterコールに「.TXT」を追加しているためC.あなたは新しいファイル「hello.txt.txt」を取得します。あなたは、ファイルを読み込みたいのですが、なぜ読み込みではなくファイルに書き込むためのFileWriterを作成するのですか?読みたい場合は、FileReaderを使用してください。

0

getPathメソッドがファイル名を含むファイルのパスを返していますか?私はこれが誤解を招く恐れがあることを知っています、それであなたは2txtを持っています。たぶん、あなたは3文字を削減するように、パスのためにいくつかの文字列操作を行う必要がありますなど

例:再びfl.getPath().substring(0, fl.getPath().length()-3)

0

、私が考えてきた、...

いっそのこと、あなたはクイズを目指していた場合クイズ参加者のために配布されたファイルを開くクイズシステムの文書を作成し、それを開いてフォームに記入して(例えばPdfフォーム)回答してログインするか、自動的にログインして署名して保存するシステムに、すべての有効な/法的なテスト/クイズの文書があるかどうかを尋ねることができる文書を持っていれば、これはどうなるのだろうと思う:

モデル:

package com.emerlard.test.temp.test.model; 

import java.io.Serializable; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

/** 
* 
* @author eddhie 
*/ 
@Entity 
public class Document implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (id != null ? id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof Document)) { 
      return false; 
     } 
     Document other = (Document) object; 
     if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "com.emerlard.test.temp.test.model.Document[ id=" + id + " ]"; 
    } 

    private String Name; 

    private User CreatedBy; 


    //todo:create a directory system/model 
    private Directory directory; 

    ` 


}----- 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.emerlard.test.temp.test.model; 

import java.io.Serializable; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

/** 
* 
* @author eddie 
*/ 
@Entity 
public class QuestionDocument extends Document implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (id != null ? id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof QuestionDocument)) { 
      return false; 
     } 
     QuestionDocument other = (QuestionDocument) object; 
     if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "com.emerlard.test.temp.test.model.QuestionDocument[ id=" + id + " ]"; 
    } 





} /* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.emerlard.test.temp; 

import java.beans.PropertyChangeListener; 
import java.beans.PropertyChangeSupport; 
import java.io.File; 
import javax.swing.JFileChooser; 
import javax.swing.filechooser.FileNameExtensionFilter; 

/** 
* 
* @author eddhie 
* 
*/ 
public class JQuizFileChooser extends JFileChooser implements IJQuizFileChooser { 
    //todo:the event still using property change call so maybe need to be regular agent or not. but it is quite standard for this java beans 
    public static final String PROP_FILE_CHOOSEN_EVENT = "FileChoosenEvent"; 

    private String FileChoosenEvent; 

    private PropertyChangeSupport propertySupport; 


    @Override 
    public String getFileChoosenEvent() { 
     return FileChoosenEvent; 
    } 

    @Override 
    public void setFileChoosenEvent(String value) { 
     String oldValue = FileChoosenEvent; 
     FileChoosenEvent = value; 
     propertySupport.firePropertyChange(PROP_FILE_CHOOSEN_EVENT, oldValue, FileChoosenEvent); 
    } 

    //todo:what to do woith mutltipel file seleantion 
    @Override 
    public void setSelectedFile(File file) { 
     super.setSelectedFile(file); //To change body of generated methods, choose Tools | Templates. 
     //todo:what aobut mamignt eh proeety hcangei envet is not sring but drectoyr fpeorty 
     setFileChoosenEvent("Selected File Changed , do your setting of your hander to fill the containter"); 

    } 



    public void addPropertyChangeListener(PropertyChangeListener listener) { 
     propertySupport.addPropertyChangeListener(listener); 
    } 

    public void removePropertyChangeListener(PropertyChangeListener listener) { 
     propertySupport.removePropertyChangeListener(listener); 
    } 

    public JQuizFileChooser() { 
       propertySupport = new PropertyChangeSupport(this); 
     this.setFileFilter(new FileNameExtensionFilter("Text File", "txt")); 

    } 



} 

そしてTHA tcompoentへのインタフェース

package com.emerlard.test.temp; 

/** 
* 
* @author eddhie 
*/ 
public interface IJQuizFileChooser { 

    String getFileChoosenEvent(); 

    void setFileChoosenEvent(String value); 

} 

Seee:あなたはJquisFileCooserのcompojnetを関連付けることができます。ここ

(使用して、注射のために、例えばインタフェースをincude春など。その後

(缶は、プロパティinectionの利用Beanをjsutことができます)

あなたのメインのコード

@autowire 
    IQuizFileChooser 

これは、その後、あなたがキャッチすることができます。このファイルチューザの内容を結果や

を処理しますメインコードにファイルのイベントが表示されます。

private void newBean11PropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_newBean11PropertyChange 
     // TODO add your handling code here: 

    }//GEN-LAST:event_newBean11PropertyChange 
あなただけ接続し、あなたのイベントへのEVTの特派

そして

内の表示のための容器を満たすあなたが適切なID名

で適切なディレクトリに書き込みをいくつかしてFileWriterを使用し、次に保存を

簡単アプリケーションモデルのモデルの記録

GOTIT?

はSO結局、あなたはちょうど約すべてこの

@autowire Iquizzfilechooser

@autowireが必要 Containner //あなたはあなたがどこに行きたいかに応じてすぐに実行することができ これをしたいと場合もし他のものが注射されている、またはあなたが他のものを追加したいのであれば、あなた次第です

cool right?

関連する問題