No.4ベストアンサー
- 回答日時:
指定したフォルダ内のファイルに番号をつけて画面に出力し、一番目と二番目に結合させたい番号を半角数字で入力するとその順に連結されて組み合わせ順の番号名の.txtファイルとして出力されるプログラムです
ファイルを結合するたびに再度結合作業を行うか確認が行われるので継続したければyを入力すると再度結合のための番号入力画面が出力され したくなければnを入力すると終了します。
import java.io.File;
import java.io.Console;
import java.io.*;
class AL4{
static String wr="D:\\Java\\Java\\";//このフォルダ内のファイルを組み合わせ、結果もこの中に出力する
static int flg=0;
public static void main(String[] args){
File fl=new File(wr);
File fls[]=fl.listFiles();
int a=fls.length;
while(flg==0){
String wr2=wr;
for(int b=0;b<a;b++){
String c=fls[b].toString();
System.out.println(b+1+"番目のファイル名"+c);
}
Console console = System.console();
int input2=0;
int input3=0;
int flag=0;
while(flag==0){
String input = console.readLine("連結したいファイル名の番号:");
try{
input2=Integer.parseInt(input);
flag=1;
}catch(Exception e){}
}
flag=0;
while(flag==0){
String input = console.readLine("連結したいファイル名の番号 二番目:");
try{
input3=Integer.parseInt(input);
flag=1;
}catch(Exception e){}
}
wr2=wr+"連結"+input2+"-"+input3+".txt";
File files=new File(wr2);
files.delete();
try(BufferedReader br= new BufferedReader(new FileReader(fls[input2-1]));
BufferedWriter bw=new BufferedWriter(new FileWriter(wr2,true));){
String data=null;
while((data=br.readLine())!=null){
bw.write(data);
bw.newLine();
}
}catch(Exception e){}
try(BufferedReader br= new BufferedReader(new FileReader(fls[input3-1]));
BufferedWriter bw=new BufferedWriter(new FileWriter(wr2,true));){
String data=null;
while((data=br.readLine())!=null){
bw.write(data);
bw.newLine();
}
}catch(Exception e){}
String flg3 = console.readLine("結合ファイル出力を続けますか?(y/n):");
if(flg3.equals("n")){
flg=1;}else if(flg3.equals("y")){
}else{
flg=1;
}
}
}
}
ありがとうございます。
wrに"C:\\new\\files\\"ここの情報を入れてflgは0を宣言しておく。
flにwrの情報を入れfls、その長さ分をaに入れておく。
bがaより上になるまで繰り返し、fls[0]から順番に表示させる。
数字を入力させ、input2,3にそれぞれ入れwr2に
"C:\\new\\files\\"このフォルダに書き込んでいく。
yが入力されたら最初のwhile文から繰り返す。
大雑把ですがやっていることはこんな感じなのでしょうか?
No.5
- 回答日時:
No.4です
>wrに"C:\\new\\files\\"~ ?
大体その通りです
flにwrの情報を入れfls、という部分が
flにはwrの情報が、flsにはそれ以下のファイルの情報が、という意味だとしたらその通りです
No.3
- 回答日時:
全ての通りというのは組み合わせの順番の事でしょうか
「フォルダ内にあるファイル全ての全通りの順番の組み合わせ」結果が一つずつ別の.txtファイルに収納されて出力されるプログラムです
3つのファイルが格納されている場合 出力ファイルは6つになります
5つだと120個になります それ以上の数だとファイル数が増えすぎるので試すと結果が出るまでに時間がかかります
出力ファイルの最後にはファイルをどの順番で結合したかの情報が加えられます
import java.io.File;
import java.io.*;
import java.nio.file.*;
class AL3{
static String[] ssubadd={""};
static String wrf="C:\\new\\files\\record\\";//このフォルダ内に全ての組み合わせの結果が毎回入る このフォルダの中にさらにフォルダを入れると誤作動(毎回このフォルダ及び中の全てのファイルが消され新しい結果が入る)
static String sta="C:\\new\\files\\";//このフォルダ内のファイルを結合する ファイルは何個でも可 上のパスのフォルダ以外を入れると誤作動
public static void main(String[] args){
Path path=Paths.get(wrf);
try{
Files.walk(path).filter(s -> s.toString().endsWith("")).forEach(q -> SL(q));
}catch(IOException e){e.printStackTrace();}
try {
Files.delete(path);
} catch (IOException e) {e.printStackTrace();}
File fl=new File(sta);
File fls[]=fl.listFiles();
int g=fls.length;
File fls2[]=new File[g];
String fls3[]=new String[g];
for(int k=0;k<g;k++){
fls3[k]=fls[k].toString();
}
add2(fls3,ssubadd);
}
static int a2=0;
static String wname="";
public static void SL(Path a){
String a2=a.toString();
File a3=new File(a2);
a3.delete();
}
public static void add2(String[] q,String[] a){
File fi1 = new File(wrf);
fi1.mkdirs();
if(q.length <= 1) {
a2++;
System.out.println("組み合わせ"+a2+"種類目");
int c=0;
for(String asub: a){
c++;
if(c!=0 || c!=1){
adds(asub,wrf+a2+".txt");
wname=wname+asub;
System.out.println(asub);
}
}
for(String r:q){
wname=wname+r;
System.out.println(r);
adds(r,wrf+a2+".txt");
}
System.out.println();
System.out.println();
adds2(wrf+a2+".txt",wname);
wname="";
}
else {
for (int i = 0; i < q.length; i++) {
int l=q.length;
String[] s2=new String[l-1];
for(int s4=0;s4<=i-1;s4++){
s2[s4]=q[s4];
}
for(int s4=i;s4<l-1;s4++){
s2[s4]=q[s4+1];
}
String[] aa=new String[a.length+1];
for(int t=0;t<a.length;t++){
aa[t]=a[t];
}
aa[a.length]=q[i];
add2(s2,aa);
}
}
}
static void adds(String file,String file2){
try(
BufferedReader br=new BufferedReader(new FileReader(file));
BufferedWriter bw=new BufferedWriter(new FileWriter(file2,true));
){
String data=null;
while((data=br.readLine())!=null){
bw.write(data);
bw.newLine();
}
}catch(Exception e){}
}
static void adds2(String file2,String sen1){
try(
BufferedWriter bw=new BufferedWriter(new FileWriter(file2,true));
){
bw.newLine();
bw.newLine();
bw.write(sen1);
bw.newLine();
}catch(Exception e){}
}
}
No.2
- 回答日時:
どう「うまくいかない」のか、具体的に書いてください。
エラーが出るなら、そのメッセージをちゃんと書いてください。
for文をどう使おうとしたのかを書いてください。
http://docs.oracle.com/javase/jp/7/api/java/io/F …
> この抽象パス名がディレクトリを示さない場合、このメソッドは null を返します。
に該当してfls[] = null になっているのと
> 結果の配列の名前文字列は特定の順序にはなりません。アルファベット順になるわけではありません。
に該当して、期待通りの順番になっていない、というのと
それ以外のなにか(例えば、for文自体をまったく理解できていない)なのと
では、まったく対処方法が違います。
No.1
- 回答日時:
//拡張for文を使います
import java.io.File;
import java.io.*;
import java.nio.file.*;
class AL{
public static void main(String[] args){
File fl=new File("C:\\new\\files\\");
File fls[]=fl.listFiles();
for(File file :fls){//拡張for文
try(
BufferedReader br=new BufferedReader(new FileReader(file));
BufferedWriter bw=new BufferedWriter(new FileWriter("D:\\new\\files\\AL.txt",true));//,trueを入れると上書きではなく書き足しになる
){
String data=null;
while((data=br.readLine())!=null){
bw.write(data);
bw.newLine();
}
}catch(Exception e){}
}
}
}
/*これでD:\\new\\files\\AL.txtに連結された内容が入ると思います*/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- フリーソフト ffmpegのパラメーター『-i』について 1 2023/03/09 07:19
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
九九を横に表示する。
-
InputStream.read()でタイムア...
-
Javaの質問です。テキストファ...
-
テキストファイルから空白行をよむ
-
java連結
-
Javaの質問です。テキストファ...
-
テキストファイルをリソースか...
-
ファイルよりの文字列の取り込...
-
javaのファイル読み込み時の文...
-
javaのfor文が機能してないみた...
-
Java int sum = 0は必要ですか?
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
オブジェクトの中のプロパティ...
-
Java 入力した整数値の合計を、...
-
ORA-01858: 数値を指定する箇所...
-
実数からの小数部の取得
-
テキストボックスに入力された...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルから空白行をよむ
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
yyyymmddからyyyy/mm/d...
-
[JAVA]エラーが解決できません。
-
InputStream.read()でタイムア...
-
Inputstreamについて
-
テキストファイルにおいて任意...
-
Javaの質問です。テキストファ...
-
Java int sum = 0は必要ですか?
-
Java 読み込んだテキストファイ...
-
javaからffmpegの利用
-
java連結
-
javaでCSVの中身から最大値を表...
-
javaのfor文が機能してないみた...
-
Javaでデータに登録する度にID...
-
「javaに関して」エラーが解決...
-
プログラムのコードとLIBSVM形式
-
以下のJAVAプログラムでご質問...
おすすめ情報
全ての通りを連結させたいので、今回の場合は3つのファイルが出来ると仮定します。
全ての通りは語弊がありました。すいません。
1と2、1と3、2と3ができれば2と1、3と1、3と2は必要ない。ということでした。