第一週學習Java。我的破碎的代碼在下面道歉。試圖打開一個文件讀取它並選擇需要的內容寫入另一個文件。我的文件是這樣的:如何打開並讀取文件並將特定內容寫入新文件?
DESCRIPTION:
TITILE:
TYPE: image
SOURCE: Library
FORMAT: jpeg
IDENTIFIER: 120034
LATITUDE: 40.109580
LONGITUDE: -88.228378
DESCRIPTION:
TITLE: GSLIS
SUBJECT:
TYPE: image
SOURCE: Library
FORMAT: jpeg
IDENTIFIER: 120155
LATITUDE: 40.107779
LONGITUDE:-88.231621
我只是寫兩段代碼,一個用於打開和讀取,一個用於匹配模式:
package Functions;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
public class readFileLocal {
private static final String[] String = null;
private String path;
public readFileLocal(String file_path){
path = file_path;
}
public String[] openFile() throws IOException{
FileReader freader = new FileReader (path);
BufferedReader textReader = new BufferedReader (freader);
int numberOfLines = readLines();
String[] textData = new String[numberOfLines];
int i;
for (i=0; i<numberOfLines; i++){
String newLine=new String();
newLine=null;
textData[i] = textReader.readLine();
String a = textData.toString();
while ((textData[i])!=null){
if (a.startsWith("Identifier: ") || a.startsWith("Latitude: ")||a.startsWith("Longitude:")){
newLine.append(a);
}
boolean filled1 =Boolean.valueOf(String newLine[0]);
boolean filled2 =Boolean.valueOf(String newLine[1]);
boolean filled3 =Boolean.valueOf(String newLine[2]);
if(filled1, filled2, filled3) {
System.out.println(newLine[0]+'|'+newLine[1]+"|"+newLine[2]+"\n");
}
}
}
textReader.close();
}
int readLines() throws IOException{
FileReader file_to_read = new FileReader(path);
BufferedReader lines = new BufferedReader (file_to_read);
String aLine=lines.readLine();
int numberOfLines = 0;
while(aLine != null) {
numberOfLines ++;
}
lines.close();
return numberOfLines;
}
}
我也想通了如何搜索字符串中我想與人的幫助的方式,如下圖所示:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ReadLatLong
{
public ReadLatLong(){
String line = "IDENTIFIER: 115956 LATITUDE: 40.104730 LONGITUDE: -88.228798 DATE RIGHTS IDENTIFIER: 115956 LATITUDE: 40.104730 LONGITUDE: -88.228798 DATE RIGHTS";
String pattern = "IDENTIFIER:\\s(\\d*)\\sLATITUDE:\\s(\\d*\\.?\\d*)\\sLONGITUDE:\\s(.*?)\\s";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
while (m.find()) {
System.out.println("Image: " + m.group(1)+"|"+m.group(2)+"|"+m.group(3));
}
}
}
現在我不知道如何搜索到è整個文件抓住所有標識符,緯度,經度,並把他們全部是這樣的: 120034 | 40.109580 | -88.228378 \n
120155 | 40.107779 | -88.231621 \n
這是我的主要方法,但我不知道如何把它寫在一個新的文件無論是。
package readText;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class FileData {
public static void main(String[] args) throws Exception {
String file_path1 = "F:\\CampusImages.txt";
String file_path2 = "F:\\CampusImageIDs.txt";
try{
ReadFileLocal file = new ReadFileLocal(file_path1);
WriteFile writeout = new WriteFile(file_path2); //Don't know how to write it in new file.
PrintWriter writer = new PrintWriter(new FileWriter(new File(file_path2)));
String[] arylines = file.openFile();
writeout.WriteToFile(String.valueOf(arylines));
int i;
for (i=0; i<arylines.length; i++){
System.out.println(arylines[i]);
}
writer.close();
}
catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
在此先感謝。
不,這不是我的家庭作業。這只是我試圖做的一個項目,同時也是在挑選Java。我在學校學了一個小蟒蛇,那是我用來理解Java的鏡頭,但我的Python也很基礎。 :-P無論如何,謝謝你的線索。 – qximin 2015-03-19 03:04:25
對不起,我使用的不適當的措辭。最近發生了不合理的事情。我回想起當我開始使用Java時,曾經在其他人使用javadoc發送給我的示例代碼中查看每個單詞。如果你有時間,你可以考慮在javadoc中查詢語句及其含義。這對我的情況有很大的幫助。 – senderj 2015-03-19 05:55:02
謝謝。我正在閱讀不同的資源。我喜歡用於學習的是其他人的代碼。我喜歡閱讀定義,示例代碼和詳細解釋,以便我能更好地理解事物。 – qximin 2015-03-19 14:46:26