ورود

View Full Version : خواندن و نوشتن متن از فایل در جاوا



mahtab_18
سه شنبه 16 آبان 1385, 10:53 صبح
سلام

من می خواهم برنامه ای به استفاده از جاوا بنویسم که در آن محتوای فایلی را بخواند و بعد ویرایش کند . ولی نمی دونم باید از چه متد هایی استفاده کنم .

لطفا راهنمایی کنید .

با تشکر

gol_baharin
سه شنبه 16 آبان 1385, 11:38 صبح
سلام
سوال من درموردپیدا کردن الگوریتم کوتاهترین مسیر است
و پیدا کردن ساختمان cd می باشد.
هر کسی چیزی می دونه بسم ا..

rezaTavak
سه شنبه 16 آبان 1385, 13:32 عصر
برای خواندن و نوشتن روی هارد از :

http://www.javacoffeebreak.com/faq/faq0004.html

mahtab_18
چهارشنبه 17 آبان 1385, 12:19 عصر
خیلی ممنون از جوابتون خیلی کمکم کرد .
یه سوال ؟
می خواستم بدونم آیا می تونم محتوای فایلی را تغییر بدم ؟

rezaTavak
چهارشنبه 17 آبان 1385, 21:36 عصر
http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html

http://www.zen.uci.edu/~klefstad/s/180a/io.html
(http://www.captain.at/programming/java/)

mamali5030
دوشنبه 13 شهریور 1391, 10:35 صبح
http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html

http://www.zen.uci.edu/~klefstad/s/180a/io.html
(http://www.captain.at/programming/java/)

آقا از ریشه ممنونتم

idea novin
جمعه 17 شهریور 1391, 01:30 صبح
سلام
من ی مشکل دارم میخوام روی اطلاعاتی که تو فایلم هست سرچ کنم به این صورت:
1,علی,حسینی,2281545
2,رضا,رضایی,6584135
میخوام عدد از کاربر بگیره تو فایلم سرچ کنه بعد اطلاعاتشو چاپ کنه مثلا اگه زد 2 چاپ کنه 2,رضا,رضایی,6584135
چجور میتونم این کارو کنم ؟؟؟؟؟؟؟

mamali5030
شنبه 18 شهریور 1391, 18:24 عصر
سلام
من ی مشکل دارم میخوام روی اطلاعاتی که تو فایلم هست سرچ کنم به این صورت:
1,علی,حسینی,2281545
2,رضا,رضایی,6584135
میخوام عدد از کاربر بگیره تو فایلم سرچ کنه بعد اطلاعاتشو چاپ کنه مثلا اگه زد 2 چاپ کنه 2,رضا,رضایی,6584135
چجور میتونم این کارو کنم ؟؟؟؟؟؟؟
بالا تر به این سوال پاسخ داده شده.
تو باید با متد readline که یه متد قدیمی هستش خط ها رو بخونی
بعد اون هارو با subdtring کات کنی یعنی اول با متد indexof محل کاما رو پیدا کن بعد
اونو تو آرایه ذخیره کن
حالا سرچ کن و فایل رو پیدا کنید.
اگه مفهوم نبود برام میل کن

niloofar_r
پنج شنبه 03 مرداد 1392, 10:40 صبح
سلام
یه سوال داشتم می خواستم ببینم برای خوندن و نوشتن در جاوا غیر از Scanner چه راه هایی هست ؟
ممنون :)

javaphantom
پنج شنبه 03 مرداد 1392, 12:42 عصر
سلام
یه سوال داشتم می خواستم ببینم برای خوندن و نوشتن در جاوا غیر از Scanner چه راه هایی هست ؟
ممنون :)




public static void main(String[] s ) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Write something: ");
String line = reader.readLine();
System.out.println("line = " + line);
}

bahar_R
جمعه 18 اردیبهشت 1394, 13:25 عصر
سلام من یک فایل 2گیگابایتی دارم که میخوام 1 مگ 1 مگ بخونم ازش.ممنون میشم راهنماییم کنین.

ahmad.mo74
جمعه 18 اردیبهشت 1394, 17:22 عصر
سلام. چیزی که پیشنهاد میکنم، استفاده از MappedByteBuffer هست. بخشی از documentation کلاس MappedByteBuffer :


/**
* A direct byte buffer whose content is a memory-mapped region of a file.
*
* <p> Mapped byte buffers are created via the {@link
* java.nio.channels.FileChannel#map FileChannel.map} method. This class
* extends the {@link ByteBuffer} class with operations that are specific to
* memory-mapped file regions.
*
* <p> A mapped byte buffer and the file mapping that it represents remain
* valid until the buffer itself is garbage-collected.
*
* <p> The content of a mapped byte buffer can change at any time, for example
* if the content of the corresponding region of the mapped file is changed by
* this program or another. Whether or not such changes occur, and when they
* occur, is operating-system dependent and therefore unspecified.
*


تا جایی که میدونم سریع ترین راه برای خوندن فایلهای بزرگ تو جاوا همین MappedByteBuffer هست.


import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Paths;


/**
* @author avb
*/
public class LargeFileReadTest {


static final int FILE_CHUCK_SIZE = 1073741824; //1 GB
static final int BUFFER_SIZE = 1048576; //1 MB


public static void main(String[] args) throws IOException {
String fileName = "D:\\LargeFile.txt";
try (FileChannel inChannel = FileChannel.open(Paths.get(fileName))) {
long pos = 0, size = inChannel.size(), chunkSize;
while (size > 0) {
chunkSize = Math.min(FILE_CHUCK_SIZE, size);
MappedByteBuffer mappedByteBuffer = inChannel.map(FileChannel.MapMode.READ_ONLY, pos, chunkSize);
read(mappedByteBuffer);
mappedByteBuffer.clear();
size -= chunkSize;
pos += chunkSize;
}
}
}


static void read(MappedByteBuffer mappedByteBuffer) throws IOException {
byte[] bytes = new byte[BUFFER_SIZE];
while (mappedByteBuffer.hasRemaining()) {
int len = Math.min(bytes.length, mappedByteBuffer.remaining());
mappedByteBuffer.get(bytes, 0, len);
process(bytes);
}
}


static void process(byte[] bytes) throws IOException {
//process bytes
}


}


من خودم روی یه فایل متنی حدودا 3 گیگی تست کردم و بدون مشکل تونستم فایل رو بخونم.

bahar_R
شنبه 19 اردیبهشت 1394, 13:02 عصر
خیلی ممنون
اگه بخوام از buffered reader استفاده کنم چجوری میشه؟

ahmad.mo74
یک شنبه 20 اردیبهشت 1394, 16:37 عصر
سلام. بله از buffered reader هم میتونید استفاده کنید. اما پیشنهاد من همون MappedByteBuffer هست چون برای فایلی با این حجم خیلی مناسب تر و سریع تره.


static final int BUFFER_SIZE = 1048576;


public static void main(String[] args) throws IOException {
try (FileReader fileReader = new FileReader("D:/a.txt");
BufferedReader reader = new BufferedReader(fileReader)) {
char[] buf = new char[BUFFER_SIZE];
while (reader.read(buf) != -1) {
process(buf);
}
}
}


static void process(char[] chars) {


}


از این کد استفاده کنید :


import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Paths;


/**
* @author avb
*/
public class LargeFileReader {


static final int BUFFER_SIZE = 1024 * 1024;


static void readFile(String fileName) throws IOException {
try (FileChannel inChannel = FileChannel.open(Paths.get(fileName))) {
long pos = 0, size = inChannel.size(), chunkSize;
MappedByteBuffer mbb;
while (size > 0) {
chunkSize = Math.min(Integer.MAX_VALUE, size);
mbb = inChannel.map(FileChannel.MapMode.READ_ONLY, pos, chunkSize);
readBuffer(mbb);
mbb.clear();
size -= chunkSize;
pos += chunkSize;
}
}
}


static void readBuffer(MappedByteBuffer mappedByteBuffer) throws IOException {
while (mappedByteBuffer.hasRemaining()) {
int len = Math.min(BUFFER_SIZE, mappedByteBuffer.remaining());
byte[] bytes = new byte[len];
mappedByteBuffer.get(bytes);
process(bytes);
}
}


static void process(byte[] bytes) throws IOException {
String s = new String(bytes);
//...
}


public static void main(String[] args) throws IOException {
String fileName = "D:\\large.txt";
readFile(fileName);
}


}

aynaz20
شنبه 04 مهر 1394, 16:04 عصر
سلام ببخشید میشه در مورد java logging log 4j توضیح بدهید و اینکه چطوری میشه اطلاعات log را در database مثل postgresذخیره کرد؟؟؟؟؟؟ممنون میشم راهنمایی کنین!خیلی ضروریه