質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

マルチスレッド

マルチスレッドは、どのように機能がコンピュータによって実行したのかを、(一般的にはスレッドとして参照される)実行の複合的な共同作用するストリームへ区分することが出来ます。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Q&A

0回答

1146閲覧

非同期処理で一行づつ処理の進行状況を表示させたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

マルチスレッド

マルチスレッドは、どのように機能がコンピュータによって実行したのかを、(一般的にはスレッドとして参照される)実行の複合的な共同作用するストリームへ区分することが出来ます。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

0グッド

0クリップ

投稿2021/09/01 01:37

提示子コードですがマルチスレッドなのですが以下のようにコンソール画面をクリアしながら画面に進行状況を表示させたいのですがこれをするにはどういった処理を書く必要があるのでしょうか?

txt

1ファイル〇〇 [pdf生成中] 20% 2ファイル〇〇 [pdf生成中] 10%

java

1 2public class Image 3{ 4 5 public Image(int w,int h,String n) 6 { 7 width = w; 8 height = h; 9 path = n; 10 } 11 12 13 public int width; 14 public int height; 15 public String path; 16} 17

java

1 2import java.io.IOException; 3import java.io.File; 4 5import javax.imageio.ImageIO; 6 7import java.awt.image.BufferedImage; 8 9import org.apache.pdfbox.pdmodel.PDDocument; 10import org.apache.pdfbox.pdmodel.PDPage; 11import org.apache.pdfbox.pdmodel.PDPageContentStream; 12import org.apache.pdfbox.pdmodel.common.PDRectangle; 13import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; 14 15public class ConverterPage extends Thread 16{ 17 File pageName; 18 19 public ConverterPage(String file) 20 { 21 pageName = new File(file); 22 } 23 24 @Override 25 public void run() 26 { 27 try 28 { 29 BufferedImage b = ImageIO.read(pageName); 30 Image img = new Image(b.getWidth(),b.getHeight(),pageName.getPath()); 31 PDDocument document = new PDDocument(); 32 PDRectangle rec = new PDRectangle(); 33 rec.setUpperRightX(0); 34 rec.setUpperRightY(0); 35 rec.setLowerLeftX(img.width); 36 rec.setLowerLeftY(img.height); 37 PDPage page = new PDPage(rec); 38 document.addPage(page); 39 40 PDImageXObject xImage = PDImageXObject.createFromFile(pageName.getPath(),document); 41 PDPageContentStream stream = new PDPageContentStream(document,page); 42 stream.drawImage(xImage, 0,0); 43 stream.close(); 44 45 document.save(pageName.getParent() + "\" + pageName.getName() + ".pdf"); 46// System.out.println("--->: " + fileName.getParent() + "\" + fileName.getName() + ".pdf"); 47 48 49 } 50 catch(IOException e) 51 { 52 e.printStackTrace(); 53 } 54 } 55 56} 57

java

1import java.io.File; 2import java.util.ArrayList; 3import java.util.List; 4import java.util.Scanner; 5 6public class Main 7{ 8 public static void main(String args[]) 9 { 10 Scanner scanner = new Scanner(System.in); 11 List<Converter> dirList = new ArrayList<>(); //ディレクトリ 12 List<ConverterPage> pageList = new ArrayList<>(); //ページ 13 14 int i = 0; //表示用 15 while(true) 16 { 17 18 System.out.print("\n\nDirectory: "); 19 20 if(scanner.hasNextLine() == false) 21 { 22 break; 23 } 24 25 26 27 String fileName = scanner.nextLine(); 28 System.out.println(fileName); 29 30 File file = new File(fileName); 31 32 //System.out.println(file.getName().substring(file.getName().lastIndexOf("."))); 33 34 System.out.println(" " + i + " >: " + fileName); 35 36 //ファイルかディレクトリかを選別 37 if(file.exists() == true) 38 { 39 if(file.isFile() == true) 40 { 41 String extension = file.getName().substring(file.getName().lastIndexOf(".")); 42 43 if(extension.equals(".png") || extension.equals(".jpg") || extension.equals(".jpeg")) 44 { 45 pageList.add(new ConverterPage(fileName)); 46 } 47 } 48 else 49 { 50 dirList.add(new Converter(fileName)); 51 } 52 } 53 else 54 { 55 System.out.println("対応形式ではりません: " + file.getName()); 56 } 57 58 i++; 59 } 60 61 62 //ディレクトリ 63 if(dirList.size() > 0) 64 { 65 for(Converter con : dirList) 66 { 67 con.start(); 68 } 69 70 } 71 72 //ファイル 73 if(pageList.size() > 0) 74 { 75 for(ConverterPage con : pageList) 76 { 77 con.start(); 78 } 79 } 80 81 try 82 { 83 //待機 84 for(Converter con : dirList) 85 { 86 con.join(); 87 } 88 89 //待機 90 for(ConverterPage con : pageList) 91 { 92 con.join(); 93 } 94 95 } 96 catch(InterruptedException e) 97 { 98 e.printStackTrace(); 99 } 100 101 scanner.close(); //scanner close 102 103 104 System.out.println("終了"); 105 } 106} 107

java

1import java.io.File; 2 3import javax.imageio.ImageIO; 4 5import java.awt.image.BufferedImage; 6 7import java.util.ArrayList; 8//import java.util.Arrays; 9import java.util.Collections; 10import java.util.List; 11 12import org.apache.pdfbox.pdmodel.PDDocument; 13import org.apache.pdfbox.pdmodel.PDPage; 14import org.apache.pdfbox.pdmodel.PDPageContentStream; 15import org.apache.pdfbox.pdmodel.common.PDRectangle; 16import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; 17 18public class Converter extends Thread 19{ 20 File fileName; 21 22 23 private void GetDirectory(File dir,List<Image> list) 24 { 25 26 27 28 List<String> strList = new ArrayList<>(); 29 30 31 32 for(int i = 0; i < dir.listFiles().length; i++) 33 { 34 strList.add(dir.listFiles()[i].getPath()); 35 } 36 37 Collections.sort(strList); 38 39 int i = 0; 40 for(; i < dir.listFiles().length; i++) 41 { 42 boolean w = false; 43 try 44 { 45 BufferedImage b = ImageIO.read(new File(strList.get(i))); 46 Image img = new Image(b.getWidth(),b.getHeight(),strList.get(i)); 47 48 list.add(img); 49 50 b = null; 51 } 52 catch(NullPointerException e) 53 { 54 55 w = true; 56 57 58 } 59 catch (IOException e) 60 { 61 62 e.printStackTrace(); 63 } 64 65 if ( w == false) 66 { 67 //System.out.println(list.get(list.size() - 1).path); 68 } 69 70 } 71 72 //System.out.println("�y�[�W��: " + i); 73 74 75 76 System.out.println(); 77 //System.out.println(); 78 } 79 80 81 82 private void GeneratePDF(List<Image> list,List<String> pathList,File fileName) 83 { 84 try 85 { 86 PDDocument document = new PDDocument(); 87 List<PDPage> page = new ArrayList<>(); 88 89 90 91 92 for(Image image : list) 93 { 94 PDRectangle rec = new PDRectangle(); 95 rec.setUpperRightX(0); 96 rec.setUpperRightY(0); 97 rec.setLowerLeftX(image.width); 98 rec.setLowerLeftY(image.height); 99 100 //System.out.println(image.path + " --- size ---> ("+ image.width + " , " + image.height + ")"); 101 102 page.add(new PDPage(rec)); 103 document.addPage(page.get(page.size() -1)); 104 } 105 106 107 for(int i = 0; i < list.size(); i++) 108 { 109 110 PDImageXObject xImage = PDImageXObject.createFromFile(list.get(i).path,document); 111 PDPageContentStream stream = new PDPageContentStream(document,page.get(i)); 112 stream.drawImage(xImage, 0,0); 113 114 115 stream.close(); 116 } 117 118 119 document.save(fileName.getParent() + "\" + fileName.getName() + ".pdf"); 120 System.out.println("--->: " + fileName.getParent() + "\" + fileName.getName() + ".pdf"); 121 122 123 document.close(); 124 125 } 126 catch(IOException e) 127 { 128 e.printStackTrace(); 129 } 130 } 131 132 133 public Converter(String filePath) 134 { 135 fileName = new File(filePath); 136 } 137 138 @Override 139 public void run() 140 { 141 List<Image> imageList = new ArrayList<>(); 142 List<String> fileList = new ArrayList<>(); 143 144 System.out.println(); 145 GetDirectory(fileName,imageList); 146 GeneratePDF(imageList,fileList,fileName); 147 } 148 149} 150

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問