

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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初心者です。教えてください!
-
戻り値を使用する呼出
-
Class.forNameでエラーになる
-
テキストファイルから空白行をよむ
-
ファイルの読み飛ばしが出来ま...
-
Java・ファイルへの書き込み
-
九九を横に表示する。
-
javaでCSVの中身から最大値を表...
-
javaからffmpegの利用
-
以下のJAVAプログラムでご質問...
-
BufferedReaderでのエラー
-
C言語のポインターに関する警告
-
動的配列が存在(要素が有る)か...
-
javaの掲示板について
-
Swingなしで画像ファイルロード
-
System.err. printlnとSystem.o...
-
サーブレット、JSP、Mysqlについて
-
ORA-01858: 数値を指定する箇所...
-
偶数ビットだけと奇数ビットだ...
-
配列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
テキストファイルから空白行をよむ
-
csv出力について
-
InputStream.read()でタイムア...
-
Java int sum = 0は必要ですか?
-
FileクラスのcanRead/canWrite...
-
Class.forNameでエラーになる
-
BufferedReaderでのエラー
-
equalsの逆
-
Javaでデータに登録する度にID...
-
ProcessBuilderを使用して、対...
-
テキストファイルの任意の文字...
-
Javaの質問です。テキストファ...
-
JAVAでエラーがでる。
-
java連結
-
[JAVA]エラーが解決できません。
-
九九を横に表示する。
-
javaからffmpegの利用
-
Java FileDialog に関して
-
JavamailでGmailのお気に入りフ...
おすすめ情報
全ての通りを連結させたいので、今回の場合は3つのファイルが出来ると仮定します。
全ての通りは語弊がありました。すいません。
1と2、1と3、2と3ができれば2と1、3と1、3と2は必要ない。ということでした。